模型如何引用其所有者?

时间:2014-11-07 10:51:21

标签: ruby-on-rails activerecord ruby-on-rails-4

鉴于课程

Class Apple < ActiveRecord::Base
  belongs_to :vendor
end

Class Vendor < ActiveRecord::Base
  has_many :apples

  def do_something
    #access apple instance here???
  end
end

apple_var = Apple.find(1)
apple_var.vendor.do_something()

基本上,我需要能够从供应商内部的方法返回Apple实例。我尝试过:inverse_of,但似乎没有做我想要的。

我不确定如何描述我想要做得更好的事情。我知道我可以将自己传递给do_something方法,但感觉非常混乱。

1 个答案:

答案 0 :(得分:0)

相反,您可以在Apple类中定义此方法,因为Apple belongs to Vendor您可以轻松获取与apple关联的供应商对象

Class Apple < ActiveRecord::Base
  belongs_to :vendor

  def do_something
    # access vendor associated with apple here
  end
end

apple_var = Apple.find(1)
apple_var.do_something

按照你的方式,你可以将apple id作为参数传递

Class Apple < ActiveRecord::Base
  belongs_to :vendor
end

Class Vendor < ActiveRecord::Base
  has_many :apples

  def do_something(apple_id)
    #access apple instance here???
  end
end

apple_var = Apple.find(1)
apple_var.vendor.do_something(apple_var.id)

然后使用apple_id

获取关联的苹果记录