2
看來,update_attributes不允許我改變id(所以它是受保護的),但爲什麼rails沒有爲其他受保護的屬性拋出相同的錯誤呢?爲什麼在Rails 3.2.3中沒有大量賦值:id會引發錯誤?
> rails new mass_assignment_test
> cd mass_assignment_test
> rails g model User name:string
> rake db:migrate
> rails console
>> u = User.create(:name => "ben")
>> u.update_attributes(:id => 5)
=> true
>> u.id
=> 1
>> u.update_attributes(:created_at => Time.now)
ActiveModel::MassAssignmentSecurity:Error
這是軌道模型生成(應用程序/模型/ user.rb):
class User < ActiveRecord::Base
attr_accessible :name
end
你能告訴我們你的模型中的代碼或者是在運行生成器後直接測試嗎? – BrMcMullin 2012-07-11 17:38:26
測試是在運行生成器後直接進行的,但爲了清晰起見,我將生成的模型添加到問題中。 – 2012-07-11 17:43:12