Я работаю над системой ruby on rails.
У меня есть форма ruby on rails, которая имеет виртуальный атрибут - пароль.Действие в ответ на отправку формы обновляет объект модели и сохраняет его.Перед сохранением before_save: callback вызывает метод encrypt_password.Однако я не думаю, что виртуальный атрибут получает значение из формы.Это потому, что когда я пытаюсь войти в систему, происходит многократный сбой. Код:
attr_accessor :password
attr_accessible :Name, :password, :UserName, :RegistrationName, :BusinessName
before_save :encrypt_password
def encrypt_password
self.salt = make_salt
self.encrypted_password=encrypt(password)
end
def make_salt
secure_hash("#{Time.now.utc}--#{password}")
end
def encrypt(string)
secure_hash("#{salt}--#{string}")
end
def secure_hash(string)
Digest::SHA2.hexdigest(string)
end
Хорошо, я проверил, и да, пароль, полученный из формы, является нулевым.Но я не понимаю почему.Это код формы:
<h1>This is the page of <%= @merchant.Name %> </h1>
<p>Please enter the password to be used </p>
<%= random_generator %>
<%= form_for @merchant,:url=>{:action=>'approve'} do |m| %>
<%= m.label :Name %><br/>
<%= m.text_field :Name %><br/>
<%= m.label :password %><br/>
<%= m.text_field :password %><br/>
<%= m.submit "Approve" %>
<% end%>
Независимо от того, какой текст вводится в поле пароля, он отображается в действии Утвердить в контроллере, если яраспечатайте его напрямую с помощью params [: merchant] [: password].Но в модели это нуль