Виртуальные атрибуты и массовое назначение - PullRequest
8 голосов
/ 25 января 2012

разработчики! Я не могу понять следующую ситуацию

Например, у меня есть модель

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 Ответ

21 голосов
/ 25 января 2012

Использование attr_accessor для добавления переменной не приводит к ее автоматическому добавлению к attr_accessible. Если вы собираетесь использовать attr_accessible, то вам нужно будет добавить :population в список:

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