虚拟属性和批量分配

时间:2012-01-25 15:46:48

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord ruby-on-rails-3.2

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

例如我有模型

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

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

1 个答案:

答案 0 :(得分:21)

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

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