Я иду, хотя учебник (который я должен сказать, это отличный ресурс), и я не совсем понимаю следующее:Rails Tutorial: 6.3.1 Зашифрованный пароль
В разделе 6.3.1 мы создать столбец password_digest в БД через создание и запуск сценария перенастройки с помощью:
rails generate migration add_password_digest_to_users password_digest:string
bundle exec rake db:migrate
bundle exec rake db:test:prepare
bundle exec rspec spec/
Затем на консоли рельсы я в состоянии создать экземпляр объекта модели пользователя и установить на нем password_digest:
irb(main):007:0> @user = User.new
=> #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
irb(main):008:0> @user.password_digest = "zzzz" => "zzzz"
irb(main):009:0> @user.password_digest => "zzzz"
Однако я не могу видеть password_digest свойства на пользователь определении класса модели:
class User < ActiveRecord::Base
attr_accessible :email, :name
before_save { |user| user.email = email.downcase}
VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
validates :name, presence: true, length: {maximum: 50}
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX}, uniqueness: {case_sensitive: false}
end
Я представляю Rails делают некоторые магии под одеялом, что кто-то ум объясняя именно то, что он делает?
Спасибо!
Это странно - вы можете присвоить значение атрибуту, не имеющему белого цвета. Обычно вам нужно добавить вызов 'devize' или, по крайней мере,' attr_accessible: password_digest' ... – shybovycha
@shybovycha Не является attr_accessible для массового присваивания, что это не так? –
'Однако я не могу увидеть свойство password_digest в определении класса модели User' Что вы смущаетесь? Вы ожидаете, что ссылка на новый столбец появится где-нибудь в модели? Потому что это не так, как это работает. –