引用对象的父ruby rails

时间:2014-06-05 02:52:53

标签: ruby-on-rails ruby object parent

我有一个机会模型,它将Links作为嵌套资源。我编写了一个回调函数,这样每当我添加一个新链接时,我的模型机会的内置“updated_at”属性都会更新为等于Time.now。但是,我不确定如何引用机会模型。我想做这样的事情:

这是我在Link模型中的内容,它是我的Opportunity模型的嵌套资源:

class Link < ActiveRecord::Base
belongs_to :opportunity

after_save :update_updated_at

def update_updated_at
  @opportunity.updated_at = Time.now #this line is where I am unsure of how to reference the link's Opportunity parent
end
end

谢谢!

2 个答案:

答案 0 :(得分:1)

始终通过方法名称访问ActiveRecord中的链接。没有名为@opportunity的实例变量,因此相当于在updated_at=上调用nil

你可能想要的是:

def update_parent
  return unless (self.opportunity)

  self.opportunity.updated_at = Time.now
  self.opportunity.save
end

从实施的角度来看,这有点粗鲁,因为Link对象围绕着机遇号。这通常是控制器应该做的事情。

答案 1 :(得分:1)

如果链接对象@link属于商机对象@opp,如果您通过ActiveRecord关系@opp了解@link,则可以找到opportunity.请参阅{{ 3}}了解更多细节。

给定链接记录,找到父机会记录: @opp = @link.opportunity

所以你可以写self.opportunity.updated_at = Time.now