ruby-on-rails – 如何设置一种“belongs_to:through”而不设置一个直接的belongs_to?

我知道“belongs_to:through”是无效的,它只是我的尝试表达我想要实现的,只是忍受我一秒钟…

这是我得到的:

class League
  has_many :divisions
end

class Division
  belongs_to :league
  has_many :teams
end

class Team
  belongs_to :division
  has_many :players
end

class Player
  belongs_to :team
end

现在,为了做一个“棒球卡”的观点形式,我需要:

name
team.name
team.division.name
team.division.league.name

因此,有没有办法设置一个“belongs_to:通过”直接从’players_controller’访问’division.name’没有’团队’。字首 ??我必须访问从’player’到’division’的很多列,所以寻找一种方法来“直接”访问这些列。

一个选择是在“玩家”表中包括一个“division_id”列,但我被告知,它会打破关系数据模型,因为如果数据选择功能没有被正确处理,它将允许不一致(例如玩家A在A组,在A组,但是玩家A的division_id列设置为B组)。

有可能做出一个“符号链接”,例如。 “division”现在指“team.division”,“league”现在指“team.division.league”?

或者,是每次使用完整路径的唯一真正的选择??

希望有人可以帮助。

Br,
乔纳斯

在模型类中使用委托。

class Team < ActiveRecord::Base
  belongs_to :division
  has_many :players

  delegate :league, to: :division
end

参考:http://api.rubyonrails.org/classes/Module.html#method-i-delegate

http://stackoverflow.com/questions/7834073/how-to-setup-a-kind-of-belongs-to-through-without-setting-up-a-direct-belongs

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:ruby-on-rails – 如何设置一种“belongs_to:through”而不设置一个直接的belongs_to?