Rails为足球比赛建立模型关联。比赛有两个国家

时间:2015-04-13 15:55:49

标签: ruby-on-rails model associations

有关如何建立此关系的任何建议? Match每边有两个Country,对吗?

但是,Rails管理员抱怨这不是正确的方法。

create_table "countries", force: true do |t|
  t.string   "name"
  t.string   "flag"
  t.datetime "created_at"
  t.datetime "updated_at"
end

create_table "matches", force: true do |t|
  t.integer "country_a"
  t.integer "country_b"
  t.integer "score_country_a"
  t.integer "score_country_b"
end

class Country < ActiveRecord::Base
  belongs_to :matches
end

class Match < ActiveRecord::Base
  belongs_to :country_side_a, foreign_key: :country_a
  belongs_to :country_side_b, foreign_key: :country_b
end

如何正确配置这些关系?

2 个答案:

答案 0 :(得分:0)

以下是我最终建立关系的方式:

class Country < ActiveRecord::Base
  has_many :matches_a, foreign_key: :country_a, class_name: "Match"
  has_many :matches_b, foreign_key: :country_b, class_name: "Match"
end

class Match < ActiveRecord::Base
  belongs_to :country_side_a, foreign_key: :country_a, class_name: "Country"
  belongs_to :country_side_b, foreign_key: :country_b, class_name: "Country"
end

答案 1 :(得分:-1)

Country需要has_one :matches,如果您想要一对一的映射,或has_many :matches,如果您想要多对多的关系。

在此处阅读有关如何设置一对一/多关系的信息:

http://guides.rubyonrails.org/association_basics.html#the-belongs-to-association