Я использую authlogic для аутентификации и используя this учебник. Я также ссылался на rubyDocs. Если я правильно понимаю, что метод attr_protected гарантирует, что список атрибутов не будет доступен для массового присвоения. И мои атрибуты модели защищены. Я также попытался изменить флаг белого списка в config/application.rb на false .., который не имел никакого значения.Ошибка при использовании authlogic для входа в систему:: Невозможно назначить защищенные атрибуты:
Я думаю, что проблема может быть из-за отсутствия атрибута, называемого паролем & password_confirmation в пользовательской модели. Это то, что говорится в учебнике.
Мы изменили имя поля с: crypted_password на: password. Authlogic отобразит поле пароля в: crypted_password после хеширует его. Мы также изменили тип поля из f.text_field на f.password_field, это создаст ваше стандартное поле ввода пароля вместо поля ввода обычного текста. Мы также добавили поле : password_confirmation. Вся логика для поддержки этих полей встроена в authlogic.
Это все еще так? Любые предложения по устранению этой проблемы?
Rails: 3.2.12
Рубин: 1..9.3
ActiveModel::MassAssignmentSecurity::Error in UsersController#create
Can't mass-assign protected attributes: password, password_confirmation
{"utf8"=>"✓",
"authenticity_token"=>"WUw09PvSlIxLUBFFsi1hiK6v0Y3nn7wqkjH3seCkU34=",
"user"=>{"username"=>"test",
"email"=>"test",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]"},
"commit"=>"Create User"}
После моя модель & контроллер
МОДЕЛЬ
class User < ActiveRecord::Base
attr_accessible :crypted_password, :email, :password_salt, :persistence_token, :username
end
CONTROLLER
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: "new" }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
form.html
div class="field">
<%= f.label :username %><br />
<%= f.text_field :username %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :password %><br />
<%= f.password_field :password %>
</div>
<div class="field">
<%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %>
</div>
Благодаря