使用Rails 2.3.14,我正在寻找在构建之后(但在保存之前)访问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
我正在寻找一种方法来访问关联对象(此处为:parent),而无需执行其他数据库访问。怎么办呢?
答案 0 :(得分:0)
在Rails 3中,有一个新选项:inverse_of,对于belongs_to / has_many来执行此操作,但不在Rails 2中。可能您必须自己实现类似的功能。