Ruby on rails 通过关系从has\u many\u获取连接模型

Ruby on rails 通过关系从has\u many\u获取连接模型,ruby-on-rails,has-many-through,Ruby On Rails,Has Many Through,在我的Rails应用程序中,我有一个多通关系。我想使用连接模型/表来存储有关关系的一些数据(具体来说,该特定关系使用了多少次) 我正在我的一个类上编写一个add方法,它应该检查与主题的任何现有关系,如果存在,则更新关系上的计数器,如果不存在,则创建它 例如: 咖啡喂食机与咖啡杯有关。每次CoffeeDrinker啜饮一小口时,该特定杯子上的计数器都应该增加。CoffeeDrinker第一次啜饮时,应创建杯子并初始化计数器 获取关系对象的最简单和/或最正确的方法是什么?或者我不理解你的问题,或者你

在我的Rails应用程序中,我有一个多通关系。我想使用连接模型/表来存储有关关系的一些数据(具体来说,该特定关系使用了多少次)

我正在我的一个类上编写一个add方法,它应该检查与主题的任何现有关系,如果存在,则更新关系上的计数器,如果不存在,则创建它

例如:

咖啡喂食机与咖啡杯有关。每次CoffeeDrinker啜饮一小口时,该特定杯子上的计数器都应该增加。CoffeeDrinker第一次啜饮时,应创建杯子并初始化计数器


获取关系对象的最简单和/或最正确的方法是什么?

或者我不理解你的问题,或者你会惊讶于这是多么明显。 您将对关系进行如下定义:

#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

我猜是一个组合:)让我详细说明一下:给定一个特定的咖啡机和咖啡,我需要一个真正的杯子来联系这两者。我该怎么做?当然,我可以做cup=cup.find(:first,:conditions=>['coffee\u-drinker\u-id'=>self.id,'coffee\u-id'=>coffee.id]),但感觉不太对劲。此外,如果有更好的方法,它将使我的add和get方法更易于编写。顺便说一下:咖啡已经存在于数据库中,并且在应用程序运行后不会添加。因此,我将始终在现有对象之间添加关系,而不是创建“ing”。哦,我明白了。我的编辑怎么样?我想你是在咖啡饮料上发现或举例说明一个喝咖啡的人?没错!谢谢。我不知道我可以在集合上使用find_by_*方法,但现在它非常有意义。太好了。很乐意帮忙。:)