如何使用委托方法进行两个以上的关联?

ker*_*lin 4 ruby-on-rails delegation associations

假设我通过调用以下关联链来检索运动的名称:

pick.event.league.sport.name
Run Code Online (Sandbox Code Playgroud)

我如何使用委托方法,以便我可以像这样调用*pick.event_league_sport_name*?显然,我可以在pick模型中创建一个方法:

def event_league_sport_name
     return self.event.league.sport.name
end
Run Code Online (Sandbox Code Playgroud)

但我想使用委托方法!

and*_*rea 8

我不建议这样,但如果你想......

delegate :name , :to => "event.league.sport" ,:prefix=>"event_league_sport"
Run Code Online (Sandbox Code Playgroud)

也没有前缀.

一定要处理零协会......

祝你今天愉快!


Pan*_*kos 5

您可以执行以下操作:

class Pick
  def sport
    event.league.sport
  end

  delegate :name, :to => :sport
end
Run Code Online (Sandbox Code Playgroud)

这将导致pick.name相当于pick.event.league.sport.name.