2012-02-29 3 views
1

Rails 2.3.14를 사용하여, 소유자로부터 일부 값을 얻기 위해 (저장하기 전에) 빌드 한 후 ActiveRecord 객체의 소유자에 액세스하는 방법을 찾고 있습니다. 간단하지만, 내 접근 방식은 항상 불필요한 데이터베이스 쿼리를 발생시킵니다.ActiveRecord : 레코드를 작성한 후 소유자 연결에 액세스하기

예 : 추가 데이터베이스 액세스를 수행없이 : 나는 (부모 여기) 협회 개체에 액세스 할 수있는 방법을 찾고 있어요

class Parent < ActiveRecord::Base 
    has_many :children 
end 

class Child < ActiveRecord::Base 
    belongs_to :parent 

    def after_initialize 
    self.some_value = parent.some_value 
    # This fires an additional database query to get the parent 
    end 
end 

parent = Parent.find(1) 
# SELECT * FROM `parents` WHERE (`parents`.`id` = 1) 

child = parent.children.build 
# Same SELECT query is fired again, but of course not needed 

. 어떻게 할 수 있습니까?

답변

0

레일즈 3에는 belongs_to/has_many에 대한 새로운 옵션 인 : inverse_of가 있지만 레일즈 2에는이 옵션이 없습니다. 아마도 비슷한 기능을 스스로 구현해야 할 수도 있습니다.

+0

위대한, 이것이 내가 찾고있는 것입니다. BTW,'inverse_of' ** **는 레일즈 2.3에 존재합니다. 변경 로그를보십시오 : https://github.com/rails/rails/blob/2-3-stable/activerecord/CHANGELOG –

관련 문제