在Rails中,模型中的外键是否需要attr_accessible?

时间:2013-12-20 15:03:27

标签: ruby-on-rails

使用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,否则它将为空白。这种行为是否正确?

1 个答案:

答案 0 :(得分:1)

是的,确实如此。否则你可以使用

def find_nearby_shops
  self.nearby_shops.create(
    shop_type: "test"
  )
end

self.nearby_shops将使用当前商店范围到附近的商店并绕过受保护的属性,因为您没有使用批量分配方法(例如create)来分配shop_id。< / p>