ActiveRecord:构建记录后访问所有者关联

时间:2012-02-29 08:34:35

标签: ruby-on-rails activerecord associations

使用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),而无需执行其他数据库访问。怎么办呢?

1 个答案:

答案 0 :(得分:0)

在Rails 3中,有一个新选项:inverse_of,对于belongs_to / has_many来执行此操作,但不在Rails 2中。可能您必须自己实现类似的功能。