同一型号的两个关联可能吗?

时间:2011-12-29 11:30:12

标签: ruby-on-rails-3 foreign-keys associations

我有一个模型国家(与'团队'相同)和模型匹配,我正在尝试建立一个场景,我有一个匹配记录与家庭和&远离球队。

模特

class Country < ActiveRecord::Base
  has_many :home_matches, :foreign_key => 'home', :class_name => "Match"
  has_many :away_matches, :foreign_key => 'away', :class_name => "Match"
end

class Match < ActiveRecord::Base
  belongs_to :home, :class_name => "Country", :foreign_key => "home"
  belongs_to :away, :class_name => "Country", :foreign_key => "away"
end

架构

  create_table "countries", :force => true do |t|
    t.string   "name"
    t.text     "bio"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "matches", :force => true do |t|
    t.datetime "matchdate"
    t.integer  "home"
    t.integer  "away"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

问题

如果我只是想要,这很有效:

> canada.away_matches
> japan.home_matches

但是如何获得一个国家正在比赛的所有比赛?

更新

我在另一个回复中找到了答案。 ActiveRecord has two association

我使用以下代码更新了我的国家/地区模型:

def matches
  Match.where("home = ? OR away = ?", self, self)
end

现在我可以查询:

> canada.home_matches
> canada.away_matches
> canada.matches

获得理想的结果。

1 个答案:

答案 0 :(得分:1)

您正在以错误的方式设置关联  仔细阅读

  1. Single_Table_Inheritance wiki
  2. single-table-inheritance-and-where-to-use-it-in-rails