代码之家  ›  专栏  ›  技术社区  ›  fiskeben

通过关系从has-many-u获取连接模型

  •  0
  • fiskeben  · 技术社区  · 16 年前

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

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

    例子:

    咖啡机与咖啡有关。每次给咖啡机喝一小口,这个杯子上的计数器就会增加。当cofeedrinker第一次进行sip时,应该创建cup并初始化计数器。

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

    1 回复  |  直到 16 年前
        1
  •  1
  •   mark    16 年前

    要么我不理解你的问题,要么你会惊讶这是多么明显。 您将这样定义关系:

    #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