【问题标题】:ruby on rails model association functionality for basic tennis league基础网球联赛的 ruby​​ on rails 模型关联功能
【发布时间】:2012-04-19 16:14:58
【问题描述】:

我对 Rails 还很陌生,而且我正在苦苦挣扎。我已经查看了这里的很多问题,我认为我的知识差距确实阻碍了我将两个和两个放在一起。

该网站用于女子双打网球联赛。

这是我到目前为止所做的,我想我需要退后几步。

我使用 rails generate 脚手架创建了 4 个模型和带有视图等的控制器。

模型如下所示:

players:
firstname
lastname
timestamps

teams:
playerone
playertwo
timestamps

fixtures:
team1
team2
court
division
date
timestamps

results:
fixture
set1team1
set1team2
set2team1
set2team2
set3team1
set3team2
team1
team2
timestamps

现在我想创建关联,以便球队有两名球员(球员一,球员二),每场比赛都有两支球队(球队1,球队2)。

然后我希望结果模型中的夹具与夹具模型中的记录相关联。

球队进行3组6场比赛,因此结果模型中的单独字段是记录每组比赛中每支球队的成绩,然后给球队一个最终得分。如果一支球队赢得了这一盘(前 6 场比赛),他们将获得额外的 6 分。

这是我对关系的尝试。

class Team < ActiveRecord::Base
  has_many :players
  has_one :playerone, :class_name => "Player", :foreign_key => "player"
  has_one :playertwo, :class_name => "Player", :foreign_key => "player"
end

class Player < ActiveRecord::Base
  belongs_to :team
end

class Result < ActiveRecord::Base
  has_one :fixture
end

class Fixture < ActiveRecord::Base
  has_many :teams
end

我似乎对 Rails 中的视图和布局有一定的了解,但我还没有意识到强大的一面。

我一直在查看许多教程,但这真的让我很沮丧,我希望有人能提供帮助。

提前致谢。

亚当

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 model associations


    【解决方案1】:

    没有必要尝试为 playerone 和 playertwo 定义关系。在您的团队编辑视图中,您将有两个选择,每个选择都从球员列表中选择。

    Fixture 也一样,也不需要建立关系。事实上,我认为现在不需要与模型分层的方式建立任何关系,您只需要在编辑视图中创建各种选择,从适当的模型中进行选择。

    这样看,有两个 'has' 关系,has_one 或 has_many,你接近它就像有一个 'has_two' 或 'has_three' 关系,没有这样的关系,这些事实已经硬编码在你的模型属性。

    【讨论】:

    • 所以我应该删除球队和球员的关系,只使用一个选择,以便表格列包含相同的数据但它们不相关?固定装置也一样?
    • 是的,你的观点(玩家一和玩家二的选择实际上是在执行正确的关系。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多