Модель юзера:
class User < ActiveRecord::Base
validates :email, presence: true, format: { with: /\A[a-z\d\-_.]+@[a-z\d\-.]+\.[a-z]+\z/i }, uniqueness: { case_sensitive: false }
validates :name, length: { maximum: 100 }
validates :password, length: { minimum: 6 }
before_save { email.downcase! }
has_secure_password
has_many :events, dependent: :destroy
end
На одной страничке две формы:
<%= form_for @user, html: { class: 'form-horizontal' } do |f| %>
<div class = 'form-group'>
<%= f.label 'Name', class: 'col-sm-6 control-label' %>
<div class = 'col-sm-6'>
<%= f.text_field :name, class: 'form-control' %>
</div>
</div>
<div class = 'form-group'>
<%= f.label 'Email', class: 'col-sm-6 control-label' %>
<div class = 'col-sm-6'>
<%= f.email_field :email, class: 'form-control' %>
</div>
</div>
<div class = 'form-group'>
<div class = 'col-sm-8 col-sm-offset-6'>
<%= f.submit 'Update profile', class: 'btn btn-primary' %>
</div>
</div>
<% end %>
<%= form_for @user, html: { class: 'form-horizontal' } do |f| %>
<div class = 'form-group'>
<%= f.label 'Current password', class: 'col-sm-6 control-label' %>
<div class = 'col-sm-6'>
<%= f.password_field :current_password, class: 'form-control' %>
</div>
</div>
<div class = 'form-group'>
<%= f.label 'New password', class: 'col-sm-6 control-label' %>
<div class = 'col-sm-6'>
<%= f.password_field :password, class: 'form-control' %>
</div>
</div>
<div class = 'form-group'>
<%= f.label 'Confirm new password', class: 'col-sm-6 control-label' %>
<div class = 'col-sm-6'>
<%= f.password_field :password_confirmation, class: 'form-control' %>
</div>
</div>
<div class = 'form-group'>
<div class = 'col-sm-8 col-sm-offset-6'>
<%= f.submit 'Change password', class: 'btn btn-primary' %>
</div>
</div>
<% end %>
С помощью второй формы получается изменить пароль, однако первая форма не работает, ей нужен в params ключ :password, #update_attributes не работает, из-за этого изменения не фиксируются в базе данных.
Очень нужна помощь, потому что не хочется запрашивать пароль при изменении имени или email юзера.