使用Rails 3.2,我有以下内容:
# shop.rb
class Shop < ActiveRecord::Base
has_many :nearby_shops
after_update :find_nearby_shops
def find_nearby_shops
NearbyShop.create(
:shop_id => self.id,
:shop_type => "test",
)
end
end
# nearby_shop.rb
class NearbyShop < ActiveRecord::Base
attr_accessible :shop_id, :shop_type
belongs_to :shop
end
我发现有必要在shop_id
中声明attr_accessible
以保存shop_id
,否则它将为空白。这种行为是否正确?
答案 0 :(得分:1)
是的,确实如此。否则你可以使用
def find_nearby_shops
self.nearby_shops.create(
shop_type: "test"
)
end
self.nearby_shops
将使用当前商店范围到附近的商店并绕过受保护的属性,因为您没有使用批量分配方法(例如create
)来分配shop_id
。< / p>