【问题标题】:ActiveRecord Associations QuestionActiveRecord 关联问题
【发布时间】:2010-03-13 17:40:38
【问题描述】:

我是 Rails 新手,我自愿通过一个简单的数据库来帮助当地的高中田径队,该数据库可以跟踪跑步者的表现。目前,我有三个模型:Runners、Race_Data 和 Races。我有以下关联。

Runners have_many Race_Data
Races have_many Race_Data

我还想通过 Race_Data 创建关联 Runners Have_Many Races,但是当我查看绘制的图表时,已经存在从 Race_data 到 Races 的多对一关系。 Runners 有很多 Race_Data 和 Race_Data 有一个 Race 是否意味着 Runners 和 Races 之间存在 Many_to_Many 关系?

【问题讨论】:

    标签: ruby-on-rails activerecord associations


    【解决方案1】:

    您描述的关系是隐含的,但使用它涉及的代码比可能需要的复杂。我想你想要的东西更像

    class Runner < ActiveRecord::Base
      has_many :entries
      has_many :races, :through => :entries
    end
    class Race <  ActiveRecord::Base
      has_many :entries
      has_many :runners, :through => :entries
    end
    class Entry < ActiveRecord::Base
    # I suggest this is a more expressive name than "Race_Data"
      belongs_to :runner
      belongs_to :race
    end
    

    这应该足够做这样的事情了:

    bob = Runner.new(:name=>'Bob')
    joe = Runner.new(:name=>'Joe')
    race = Race.new(:race_date=>'20100313')
    race.entries.create(:runner=>joe, :position=>1)
    race.entries.create(:runner=>bob, :position=>2)
    bob.races.all #=> [#<Race id: 1, race_date: "2010-03-13"]
    bob.entries.all #=> => [#<Entry id: 2, runner_id: 1, race_id: 1, position: 2]
    

    【讨论】:

    • 迈克,感谢您的出色回应。关于使用 Entries 而不是 race_data 的好建议。吉姆
    猜你喜欢
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多