虚拟属性和批量分配

开发商! 我无法理解下一个情况

例如我有模型

class Pg::City < ActiveRecord::Base belongs_to :country #virtual accessors attr_accessor :population #attr_accessible :city, :isdisabled, :country_id end 

我可以使用这样的代码:

 c = Pg::City.new({:population=>1000}) puts c.population 1000 

但如果我取消注释上面的attr_accessible代码抛出警告

 WARNING: Can't mass-assign protected attributes: population 

如何将虚拟属性与模型属性一起用于质量分配? 谢谢!

使用attr_accessor添加变量不会自动将其添加到attr_accessible 。 如果您打算使用attr_accessible ,那么您需要在列表中添加:population

 attr_accessor :population attr_accessible :city, :isdisabled, :country_id, :population