在我的Rails应用程序中,我有一个has_many_through关系。我想使用连接模型/表来存储关于关系的一些数据(特定关系的使用次数,具体而言)。
我正在我的一个类上编写一个add-method,它应该检查与主题的任何现有关系,如果它存在则更新关系的计数器,如果它不存在则创建它。
示例:
CoffeeDrinker与Coffee through Cup相关。每次CoffeeDrinker啜饮一个特定杯子的计数器都应该增加。 CoffeeDrinker第一次啜饮,应该创建杯子并且计数器初始化。
获取关系对象的最简单和/或最正确的方法是什么?
答案 0 :(得分:1)
要么我不理解你的问题,要么你会惊讶地发现这是多么明显。 您将如此定义关系:
#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