Как модель может обратиться к своему владельцу?

Учитывая занятия

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 из метода внутри Vendor. Я попытался:inverse_of, но это, кажется, не то, что я хочу.

Я не уверен, как описать то, что я хочу сделать лучше. Я знаю, что могу передать себя методу do_something, но это очень грязно.

1 ответ

Вместо этого вы можете определить этот метод в Apple класс, так как Apple belongs to Vendor Вы можете легко получить объект продавца, связанный с яблоком

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, используя apple_id

Другие вопросы по тегам