在ActiveRecord重新定义的关联方法中调用实际关联

时间:2012-11-09 13:19:10

标签: ruby-on-rails ruby activerecord

我有这个型号:

class User < ActiveRecord::Base
  belongs_to :company

  def company
    # Do something here

    # Call the actual association (that would be usually returned by calling User#company)
  end
end

我知道我可以使用另一个内部名称进行关联,但希望避免这种情况。

我很确定当你调用普通关联User#company方法时Rails会调用某种内部方法,我想在我重新定义的User#company方法中自己调用它。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在方法中致电super。或association(:company)associations(:company)(我忘记了哪一个)。或者你可以

def company_with_my_stuff
  company_without_my_stuff
end
alias_method_chain :company, :my_stuff

此外,您可以重命名belongs_to :original_company, :class_name => "Company", :foreign_key => "company_id",我认为这是一个更好的解决方案。