Получить модель соединения из отношения has_many_through - PullRequest
0 голосов
/ 22 августа 2010

В моем приложении на Rails есть отношение has_many_through. Я хочу использовать модель / таблицу соединений для хранения некоторых данных об отношении (сколько раз это конкретное отношение используется, если быть конкретным).

Я пишу метод add для одного из моих классов, который должен проверять любые существующие отношения с субъектом, обновлять счетчик отношения, если он существует, или создавать его, если он не существует.

Пример:

CoffeeDrinker относится к кофе через чашку. Каждый раз, когда CoffeeDrinker делает глоток, счетчик на этой конкретной чашке должен увеличиваться. В первый раз, когда CoffeeDrinker делает глоток, следует создать чашку и инициализировать счетчик.

Какой самый простой и / или самый правильный способ завладеть объектом отношения?

1 Ответ

1 голос
/ 22 августа 2010

Либо я не понимаю ваш вопрос, либо вы удивитесь, насколько это очевидно.Вы определите отношения следующим образом:

#coffee_drinker.rb
has_many :cups
has_many :coffees, :through => :cup

#cup.rb
belongs_to :coffee
belongs_to :coffee_drinker

#coffee.rb
has_many :cups
has_many :coffee_drinkers, :through => :cup

coffee_drinker.cups
coffee_drinker.coffees

coffee.cups
coffee.coffee_drinkers

#coffee_drinker.rb
after_save :update_cups_drunk

def update_cups_drunk
  cups.find_by_coffee_id(coffee_id).increment!(:count)
end

#maybe you don't have access to the coffee_id

def update_cups_drunk
  cups.find_by_coffee_id(coffees.last.id).increment!(:count)
end
...