2013-12-20 2 views
0

Использование Rails 3.2, я следующие:В Rails, attr_accessible необходимо для внешнего ключа в модели?

# 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

Да, это так. В противном случае вы можете использовать

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

self.nearby_shops волю простор nearby_shops с текущим магазином его и обходите защищенные атрибуты, потому что вы не используете метод массового назначения (например, create) назначить shop_id.

Смежные вопросы