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