这些模型之间应该有什么样的关系?

时间:2013-09-20 23:22:28

标签: ruby-on-rails model ruby-on-rails-4

我有两个模特:球员和球队。

  • 玩家有一个团队

  • 团队上有5个字段(除了名称和位置),opponent_week_1,opponent_week_2等

我希望能够说出像Player.Team.opponent_week_1

这样的内容

我应该如何将模型相互关联?玩家有团队吗?

如何设置球队的对手?我不希望球队有很多对手,因为只有那些5,我希望能够说对手_week_1,opponent_week_2等。

我正在使用Ruby 2和Rails 4.谢谢!

2 个答案:

答案 0 :(得分:1)

jackerman09,

与Rails中的许多内容一样,有几种方法可以实现。 @phgrey指出如何修复球员和球队。

关于opponent_week_1,2等等:

我认为最好的方法是,如果你实际与团队模型有has_may :opponent_week关联,就像这样:

class Team < ActiveRecord::Base
...
   has_many :fields
...
end

然后,您必须通过验证和/或通过表单将每个团队的对手周数限制为仅5。由于用户将通过表单进入那些对手周,这将是一个简单的方法来开始它。您可以控制表单,因此只需通过表单限制他们为每个团队投入的opponent_week数量。

如何调用它们opponent_week_1opponent_week_2等:有几种方法。我会尝试在您的模型中添加method_missing方法(谷歌查看如何操作),然后解析您调用的方法的名称。像这样:

def method_missing( method_name )
  if method_name.starts_with?( "opponent_week_" )
    # get the number at the end, then call 
    opponent_weeks[ num_of_week - 1 ]
  else
    super
  end
end

一切顺利,如果您需要澄清,请告诉我。

答案 1 :(得分:0)

看看这里 - http://guides.rubyonrails.org/association_basics.html

<强> 1。玩家&lt; =&gt;队

class Player < ActiveRecord::Base
...
   belongs_to :team
...
end

class Team < ActiveRecord::Base
...
   has_many :players
...
end

确保迁移create_players具有字段

t.references :team_id

<强> 2。 Oppenents 你是领导最恶劣的方式。最好看看命令之间的HABTM(has_and_belongs_to_many)关系