我在Rails项目中有许多链接到用户的模型,我遇到了加载问题,我试图将所有用户的数据显示在页面上。
我的模型声明看起来像这样:
class User < ActiveRecord::Base
validates_presence_of :server_user_id
has_many :setup_notes, :foreign_key => "server_user_id"
has_many :closure_votes, :foreign_key => "user_id"
end
class SetupNote < ActiveRecord::Base
belongs_to :user, :foreign_key => "server_user_id"
end
我应该注意,在用于关闭投票的SQL表中,user_id
与用户表中的server_user_id
值相同。
当我尝试在Rails查询中使用:include
符号时,当我需要通过user.id
查找关闭投票和设置注释时,它最终使用user.server_user_id
作为搜索值。换句话说,
me = User.first(:conditions => ["server_user_id = ?", 12610], :include => :setup_notes)
生成MySQL查询
SELECT `setup_notes`.* FROM `setup_notes` WHERE (`setup_notes`.server_user_id = 1)
返回一个空集。有没有办法格式化Rails查询/模型以发送相关的SQL查询,或者我是否需要为与用户关联的所有模型编写原始查询(如果是这种情况,我该怎么做?)
谢谢!
答案 0 :(得分:0)
如果我理解正确(用户有server_user_id
字段),在用户模型中你必须设置:primary_key选项,如下所示:
class User < ActiveRecord::Base
validates_presence_of :server_user_id
has_many :setup_notes, :foreign_key => "server_user_id", :primary_key => "server_user_id"
has_many :closure_votes, :foreign_key => "user_id", :primary_key => "server_user_id"
end