2012-10-07 49 views
0

我有'提示'模型和'团队'模型。我正在尝试创建一个表单,用户将从几场比赛中选出胜出的球队。到目前为止,用户可以选择胜出的球队,并且这些ID将被保存为Tip模型(team_id)中的foriegn键。但保存后,我不能去(例如)@ tip.team.name。我需要做什么 ?我如何关联它(我通过rails可能会奇迹般地做到这一点,如果设置foriegn键),我对rails非常陌生。谢谢你的帮助 !如何将现有模型与Rails中的新模型关联

class Tip < ActiveRecord::Base 
attr_accessible :user_id, :team_id, :team, :game_id, :game, :comp, :comp_id 
belongs_to :game 
belongs_to :comp 
belongs_to :team 
end 

class Team < ActiveRecord::Base 
attr_accessible :name 
has_many :tips 
end 

def create 
params['game'][0].each do |key, value| 
    @tip = Tip.new 
    @tip.team_id = value 
    @tip.game_id = key 
    @tip.save 
end 

最后一种方法也可能是混乱的,但不知道该怎么办。我想在一个表单中创建几个'提示'。

编辑:为了清楚我很确定这是一对多的关系,我在一个表格中创建了几个提示,但每个提示只涉及到一个团队。

编辑:其实我的做法(我敢肯定是不接近的最好方式,确实让tip.team.name这是关于让我认为并非如此我的测试数据愚蠢的错误

回答

1

如果乌拉圭回合asscociation是“提示属于一个团队”和“团队可以有许多技巧”则u在问题中定义的关联更多的信息正确。

如果您希望在创建团队时创建多个提示或为已创建的团队添加/编辑/删除提示,请查看“accep_nested_attributes_for”和https://github.com/ryanb/nested_form

如果妳可以用“@ team.name”得到球队名称,然后ü应该得到它使用“@ tip.team.name”

+0

干杯,我认为这就是我需要的.. 。 – Aaron8383

2

你真正需要的是使用has_many通过关系链接提示和团队,这是因为一个提示可以有很多团队,但是一个团队可以有很多提示,你需要创建第三个表来做这,也许命名TeamsTips下面是如何设置它:

class Tip < ActiveRecord::Base 
    has_many :teams_tip 
    has_many :teams, :through => :teams_tip 
end 

class TeamsTip < ActiveRecord::Base 
    belongs_to: teams 
    belongs_to: tips 
end 

class Team < ActiveRecord::Base 
    has_many :teams_tip 
    has_many :tips, :through => :teams_tip 
end 

现在,当你有一个@提示,你可以找到所有的队伍,为它@ tip.teams记住。这将是一个数组,以便让第一队使用@ tip.teams [0]。同样,如果你有@team,你可以通过@ team.tips获得所有的提示。

有关此的has_many通过协会如何设置,请参阅A Guide to Active Record Associations

+1

对不起,我可能是不明确的,这是一个仓促的问题.. ..一个技巧只涉及一个团队,但一个团队涉及许多技巧。我(想我...)需要在我的创建方法中做循环的事情,因为我想在一个表单上创建很多提示。我正在用我想要的正确的team_id创建新的提示,但是在创建提示后,我想去tip.team.name ....并且这似乎不起作用 – Aaron8383