Ruby on rails 为什么Rails没有一个通过方法实现的方法?

Ruby on rails 为什么Rails没有一个通过方法实现的方法?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,如本文所述,属于:x,通过::y关系最好通过委托方法实现 Rails不支持通过关系归属的原因是否有特定的原因(技术原因、设计选择) class Division belongs_to :league has_many :teams end class Team belongs_to :division has_many :players end class Player belongs_to :team belongs_to :division, through: :

如本文所述,
属于:x,通过::y
关系最好通过委托方法实现

Rails不支持通过关系归属的原因是否有特定的原因(技术原因、设计选择)

class Division
  belongs_to :league
  has_many :teams
end

class Team
  belongs_to :division
  has_many :players
end

class Player
  belongs_to :team
  belongs_to :division, through: :team # WON'T WORK
end

它将像这样工作,而不是使用through

belongs_to :division, class_name: Team

它将像这样工作,而不是使用through

belongs_to :division, class_name: Team

我不知道为什么,但ActiveRecord方法中有一种自上而下的一致模式。您正在寻找的功能已经由
提供了很多:通过
-只需将语句放在祖先对象而不是后代对象中:

有很多:通过协会也有助于建立 通过嵌套的“快捷方式”有许多关联。例如,如果一个文档有许多节,而一个节有许多段落,您有时可能希望获得文档中所有段落的简单集合。[]

在您的情况下,如下所示:

class Division
  belongs_to :league
  has_many :teams
  has_many :players, through: :teams
end

class Team
  belongs_to :division
  has_many :players
end

class Player
  belongs_to :team
end

然后,您可以调用
league.player
来获取给定联赛中的球员数组,或者调用
player.league
来获取给定球员的联赛。

我不知道为什么,但ActiveRecord方法中有一个一致的自上而下模式。您正在寻找的功能已经由
提供了很多:通过
-只需将语句放在祖先对象而不是后代对象中:

有很多:通过协会也有助于建立 通过嵌套的“快捷方式”有许多关联。例如,如果一个文档有许多节,而一个节有许多段落,您有时可能希望获得文档中所有段落的简单集合。[]

在您的情况下,如下所示:

class Division
  belongs_to :league
  has_many :teams
  has_many :players, through: :teams
end

class Team
  belongs_to :division
  has_many :players
end

class Player
  belongs_to :team
end
然后,您可以调用
league.players
以获取给定联赛中的球员数组,或调用
player.league
以获取给定球员的联赛