我有一个模型国家(与'团队'相同)和模型匹配,我正在尝试建立一个场景,我有一个匹配记录与家庭和&远离球队。
模特
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
获得理想的结果。
答案 0 :(得分:1)
您正在以错误的方式设置关联 仔细阅读