Lassen Sie sich verbinden Modell aus has_many_through Beziehung
-
30-09-2019 - |
Frage
In meiner Rails-Anwendung ich eine has_many_through Beziehung haben. Ich möchte das Modell / table verwenden beitreten einige Daten über die Beziehung zu speichern (wie oft diese besondere Beziehung verwendet wird, um genau zu sein).
Ich bin eine Add-Methode auf einen meiner Klassen zu schreiben, die für jede bestehende Beziehung mit dem Thema überprüfen sollten, aktualisieren Sie einen Zähler auf die Beziehung, wenn es vorhanden ist oder es schaffen, wenn es nicht vorhanden ist.
Beispiel:
CoffeeDrinker wird Kaffee durch Cup bezogen. Jedes Mal, CoffeeDrinker nimmt eine an diesem Cup einen Zähler trinken sollte erhöht werden. Das erste Mal CoffeeDrinker einen Schluck nimmt, sollte der Cup erstellt und der Zähler initialisiert werden.
Was ist die einfachste und / oder korrekteste Art und Weise einen Einfluß auf die Beziehung Objekt zu bekommen?
Lösung
Entweder verstehe ich Ihre Frage nicht oder du wirst überrascht sein, wie offensichtlich ist dies. Sie haben die Beziehung, wie so definiert:
#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