Ruby on rails &引用;复杂的;活动记录协会
设置某些活动记录关系时遇到问题Ruby on rails &引用;复杂的;活动记录协会,ruby-on-rails,ruby-on-rails-3,associations,rails-activerecord,Ruby On Rails,Ruby On Rails 3,Associations,Rails Activerecord,设置某些活动记录关系时遇到问题 用户 联盟 用户有许多PrimaryLeagues 用户有许多第二联盟 我希望能够编写@user.primary_leagues,并获得已设置为primary的联盟的列表。和@user.secondary_leagues,并获取已设置为secondary的联盟的列表 目前,我的课程是如何设置的,但不知怎的,这是错误的 class User < ActiveRecord::Base has_many :primary_leagues, class_name:
用户
联盟
用户
有许多PrimaryLeagues
用户
有许多第二联盟
我希望能够编写@user.primary_leagues
,并获得已设置为primary的联盟的列表。和@user.secondary_leagues
,并获取已设置为secondary的联盟的列表
目前,我的课程是如何设置的,但不知怎的,这是错误的
class User < ActiveRecord::Base
has_many :primary_leagues, class_name: 'PrimaryLeague', foreign_key: 'league_id'
has_many :secondary_leagues, class_name: 'SecondaryLeague', foreign_key: 'league_id'
class用户
类PrimaryLeague
class-League
有什么想法吗?据我所知,您只想在整个过程中使用两个类(这是有道理的)。因此:
class用户:主要联盟所有权,
:source=>:league
拥有很多:二级联赛所有权
有很多:中学联赛,
:至=>:二级联赛所有权,
:source=>:league
结束
类PrimaryLeagueOwnership:主要联盟所有权,
:source=>:user
拥有很多:二级联赛所有权
拥有多个:二级用户,
:至=>:二级联赛所有权,
:source=>:user
结束
请记住,:class\u name
应该是将保存目标关联的实际类。据我所知,您只想在整个过程中使用两个类(这是有意义的)。因此:
class用户:主要联盟所有权,
:source=>:league
拥有很多:二级联赛所有权
有很多:中学联赛,
:至=>:二级联赛所有权,
:source=>:league
结束
类PrimaryLeagueOwnership:主要联盟所有权,
:source=>:user
拥有很多:二级联赛所有权
拥有多个:二级用户,
:至=>:二级联赛所有权,
:source=>:user
结束
请记住,:class\u name
应该是将保存目标关联的实际类。depa谢谢!联盟可以有许多主要用户。。。我也想说@league.primary\u用户。。。我想也许我需要一个有很多通过关联?断言有效的密钥:未知密钥:关联外部密钥(ArgumentError)。。。。应该是一个有很多协会的组织吗?你是对的,我犯了一个错误。它可能应该是:外键
,而不是:关联外键
。如果您查看一个有许多关联的用户所接受的选项,:关联\u外键
根本不是其中之一。谢谢,德帕。我想到了这一点,并在代码中进行了更新。可能需要更新答案,以防其他人看到。帮了大忙。。。正在运行我的测试。。。看看这一切是否有效!在模型PrimaryLeagueOwnership中找不到源关联:primary_leagues或:primary_leagues。试试“有很多:初级联赛,:通过=>:初级联赛所有权,:source=>”。是:用户还是:联盟?谢谢!联盟可以有许多主要用户。。。我也想说@league.primary\u用户。。。我想也许我需要一个有很多通过关联?断言有效的密钥:未知密钥:关联外部密钥(ArgumentError)。。。。应该是一个有很多协会的组织吗?你是对的,我犯了一个错误。它可能应该是:外键
,而不是:关联外键
。如果您查看一个有许多关联的用户所接受的选项,:关联\u外键
根本不是其中之一。谢谢,德帕。我想到了这一点,并在代码中进行了更新。可能需要更新答案,以防其他人看到。帮了大忙。。。正在运行我的测试。。。看看这一切是否有效!在模型PrimaryLeagueOwnership中找不到源关联:primary_leagues或:primary_leagues。试试“有很多:初级联赛,:通过=>:初级联赛所有权,:source=>”。它是:用户还是:联盟?
class PrimaryLeague < ActiveRecord::Base
belongs_to :user
belongs_to :league
class League < ActiveRecord::Base
has_many :primary_users, class_name: 'PrimaryLeague', foreign_key: 'user_id'
has_many :secondary_users, class_name: 'SecondaryLeague', foreign_key: 'user_id'
class User < ActiveRecord::Base
has_many :primary_league_ownerships
has_many :primary_leagues,
:through => :primary_league_ownerships,
:source => :league
has_many :secondary_league_ownerships
has_many :secondary_leagues,
:through => :secondary_league_ownerships,
:source => :league
end
class PrimaryLeagueOwnership < ActiveRecord::Base
belongs_to :user
belongs_to :league
end
class SecondaryLeagueOwnership < ActiveRecord::Base
belongs_to :user
belongs_to :league
end
class League < ActiveRecord::Base
has_many :primary_league_ownerships
has_many :primary_users,
:through => :primary_league_ownerships,
:source => :user
has_many :secondary_league_ownerships
has_many :secondary_users,
:through => :secondary_league_ownerships,
:source => :user
end