ruby-on-rails – Rails belongs_to has_many与自定义外键
发布时间:2020-12-16 19:37:18 所属栏目:百科 来源:网络整理
导读:我的rails应用程序中有两个模型之间的关系.我已经偏离了如何实现关系的标准,因为我使用另一个字段作为主键,命名约定是不同的.这样做导致了关系似乎没有建立起来.我想了解为什么. 这是我的模型的修剪版本: class Player ActiveRecord::Base set_primary_key
我的rails应用程序中有两个模型之间的关系.我已经偏离了如何实现关系的标准,因为我使用另一个字段作为主键,命名约定是不同的.这样做导致了关系似乎没有建立起来.我想了解为什么.
这是我的模型的修剪版本: class Player < ActiveRecord::Base set_primary_key "alias" attr_accessible :alias,:avatar has_many :player_sessions,:foreign_key => "player_alias",:class_name => "PlayerSession" end class PlayerSession < ActiveRecord::Base attr_accessible :player_alias,:total_score belongs_to :player,:foreign_key => "player_alias",:class_name => "Player" end 播放器模型具有字段别名,这是我的应用程序中的用户名.我希望用户名作为主键,因为它是唯一的,它将更容易迁移数据并维护关系. 最初我只有已经填写了数据的PlayerSession模型,但是随着我的应用程序的增长,我添加了Player模型,并简单地插入了一个具有相同别名的行. 在播放器的显示视图中,我有以下代码: Player Sessions: <% @player.player_sessions do |player_session| %> <ul> <li><h4>Highest Score:</h4> <%= player_session.total_score %> </li> </ul> 当我尝试访问该页面时,它不会显示信息. 我可以添加的其他信息是我没有在数据库本身中添加任何关系. 我仍然是新的轨道,仍然在玩.欢迎任何关于编码标准的意见(不在回答问题之外). 更新我已经实现了Babur Usenakunov的建议,在模型中添加了primary_key选项: class Player < ActiveRecord::Base set_primary_key "alias" attr_accessible :alias,:primary_key => "alias",:class_name => "Player" end 还要测试出数据是否有效我手动获取了PlayerSession列表: 控制器中实施的代码: @player_sessions = PlayerSession.where("player_alias = ?",params[:id]) 视图中实现的代码(输出数据): <% @player_sessions.each do |player_session| %> <ul> <li><h4>Highest Score:</h4> <%= player_session.total_score %> </li> </ul> <% end %> 解决方法
我已经解决了这个问题,在这个视图中实现的循环中加入了每一个问题:
<% @player.player_sessions.each do |player_session| %> <ul> <li><h4>Highest Score:</h4> <%= player_session.total_score %> </li> </ul> <% end %> 玩了一下之后,我意识到我不需要在任何一个视图中添加primary_key选项,而只在Player模型中留下外键选项. class Player < ActiveRecord::Base set_primary_key "alias" attr_accessible :alias,:class_name => "Player" end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |