Witam,
Chcę stworzyć formularz rejestracji/logowania na stronę.
Skorzystałem z tego: http://community.programuj.com/p/comboy/Obsługa+użytkowników+w+Ruby+on+Rails i działa elegancko jak stoi samodzielnie, ale jak chciałem przepisać do mojej aplikacji to się posypało (na razie nad rejestracją się męczę
)
Dostaję error:
[quote]NoMethodError in IndexController#rejestracja
undefined method `pesel=’ for #User:0x2b5ff963d4c0[/quote]
app/controllers/index_controller.rb
[code=“ruby”]class IndexController < ApplicationController
def rejestracja
if request.post?
@user = User.new params[:user]
if @user.save
flash[:info] = “Zostałeś zarejestrowany”
end
end
end
end[/code]
app/model/user.rb
[code=“ruby”]class User < ActiveRecord::Base
validates_presence_of :pesel
validates_uniqueness_of :pesel
attr_accessor :password_confirmation
attr_reader :password
def password=(pw)
salt = [Array.new(6){rand(256).chr}.join].pack(“m”).chomp
self.password_salt, self.password_hash = salt, Deigest::MD5.hexdigest(pw + salt)
end
def password_is? (pw)
Digest::MD5.hexdigest(pw + password_salt) == password_hash
end
end[/code]
db/migrate/001_create_user.rb
[code=“ruby”]class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.column :pesel, :string
t.column “password_salt”, :string
t.column “password_hash”, :string
t.column “email”, :string
t.column “created_at”, :datetime
end
end
def self.down
drop_table :users
end
end[/code]
no i sama baza danych:
+------------------+-------------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| PESEL | varchar(11) | NO | | | |
| Imie | varchar(100) | NO | | | |
| Nazwisko | varchar(100) | NO | | | |
| password_salt | varchar(255) | NO | | | |
| password_hash | varchar(255) | NO | | | |
| ulica | varchar(150) | NO | | | |
| mieszkanie | varchar(10) | NO | | | |
| kod_pocztowy | varchar(6) | NO | | | |
| tele_home | varchar(9) | NO | | | |
| tele_mobile | varchar(9) | NO | | | |
| email | varchar(100) | NO | | | |
| gg | varchar(9) | NO | | | |
| skype | varchar(100) | NO | | | |
| icq | varchar(9) | NO | | | |
| active | enum('0','1','X') | NO | | 0 | |
| date_registered | datetime | NO | | | |
| date_last_update | timestamp | NO | | CURRENT_TIMESTAMP | |
+------------------+-------------------+------+-----+-------------------+----------------+
18 rows in set (0.00 sec)
Co jest powodem tego errora?
