我有一个机会模型,它将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
谢谢!
答案 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