有关如何建立此关系的任何建议? 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
如何正确配置这些关系?
答案 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