Ruby on rails “多个”与同一类有许多关系
我正在建立一个足球比赛,我在创建俱乐部和比赛课程时遇到了困难。我希望能够做到这一点:Ruby on rails “多个”与同一类有许多关系,ruby-on-rails,activerecord,has-many,Ruby On Rails,Activerecord,Has Many,我正在建立一个足球比赛,我在创建俱乐部和比赛课程时遇到了困难。我希望能够做到这一点: match = Match.find(2) match.home_club = <some club here> match.away_club = <other club here> 这就是我现在拥有的: class Club < ActiveRecord::Base has_many :matches end class Match < ActiveRecord:
match = Match.find(2)
match.home_club = <some club here>
match.away_club = <other club here>
这就是我现在拥有的:
class Club < ActiveRecord::Base
has_many :matches
end
class Match < ActiveRecord::Base
belongs_to :home_club, :class_name => "Club"
belongs_to :away_club, :class_name => "Club"
end
我一直在玩:与相反的东西,但我没有让它工作。这样可能吗,或者我需要有两个独立的:俱乐部里有很多关系吗?像这样:
class Club < ActiveRecord::Base
has_many :home_matches, :class_name => "Match"
has_many :away_matches, :class_name => "Match"
end
class Club“匹配”
有很多:客场比赛,:class\u name=>“比赛”
终止
我也试过了,但也没用。您正在建立多对多关系,因此需要一个链接表。该表存储这些关系,而不是在任何一个实体表中都有外键,并且应该只有一个match_id和一个club_id来关联这两个表。然后您可以使用
class Club < ActiveRecord::Base
has_many :matches, :through => :matches_clubs
end
class Club:比赛\u俱乐部
终止
等等
在这里看到更多
您是否将模式中的关系定义为主场俱乐部id
和客场俱乐部id
?因为rails似乎正试图获得匹配的.club_id
,这显然与您需要的模型相冲突
我认为你的模型是错误的,应该修改一下。
俱乐部不应该有比赛id
比赛内容应为:
- 家庭俱乐部id
- 客场俱乐部
- 时间
- 得分
俱乐部应:
- 名字
- 城市
我想如果你把这些东西从俱乐部里拿走,你会没事的
如果您希望能够进行俱乐部比赛
。
您可能需要编写一个自定义sql查询,该查询同时在home\u club和away\u club列中查找。或者为clubs->match创建一个关系表,其中有一个额外的元字段,说明俱乐部是主场还是客场。虽然你的比赛表中有主客场球杆这将允许我进行比赛。球杆
,但不允许比赛。主客场球杆
和比赛。客场球杆
。这种关系不是真正的n-m关系,是吗?很明显是2-n,我想这不是一个正常的关系,但是一个仅用于关系的表有点多?这是一个相当标准的模式。然后还可以在链接表中添加有关匹配的各种信息。在家还是在外。他们那天穿什么颜色的衣服。这就是说,如果每场比赛总是只有两个俱乐部,那么多个外键可能会更敏感,它们被定义为主场俱乐部id
和客场俱乐部id
。当我访问home\u club
时,如何让Rails查找home\u club\u id
?有一个:客场俱乐部,:class\u name=>“club”,:foreign\u key=>:客场俱乐部id你解决过这个问题吗?谢谢。你把这个问题解决了吗?
class Club < ActiveRecord::Base
has_many :home_matches, :class_name => "Match"
has_many :away_matches, :class_name => "Match"
end
class Club < ActiveRecord::Base
has_many :matches, :through => :matches_clubs
end