私がモデルに持っていた以前のRails 4
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
...
end
しかし、今はをstrong_parameters
置き換えたprotected_attributes
ので、コメントして使用しますpermit
。
これで、属性を許可せずにアクセスできることがわかりました。
私はこれrails c
を行うことができます:
2.0.0p247 :002 > User.new(admin: "1")
=> #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil, remember_token: nil, admin: true>
2.0.0p247 :016 > user = User.new(name: 'Nir', email: 'nir@example.com', password: 'foobar', password_confirmation: 'foobar', admin: "1")
=> #<User id: nil, name: "Nir", email: "nir@example.com", created_at: nil, updated_at: nil, password_digest: "$2a$10$xVnY8ydd5SoaLVipK5j4Del40FrOmu4bKypGjBEwvms7...", remember_token: nil, admin: true>
明らかに管理者属性を設定および変更できない場合。できるuser.toggle(:admin)
はずです。
それで、私が理解していないこと、または正しくすべきことは何ですか。そして、このテストに合格する方法:
describe "accessible attributes" do
it "should not have allow access to admin" do
expect do
User.new(admin: "1")
end.to raise_error(ActiveModel::MassAssignmentSecurity::Error)
end
end