显然我在这里缺少一些简单的东西。这是我的两个类和我正在调用的代码。当我使用:include with find时,它会爆炸并在查找行上给我一个NoMethodError。当我不使用:include它工作得很好(但显然不做连接)
被叫代码
def index
@users = User.find(:all, :include => [:org])
end
类
class User < ActiveRecord::Base
belongs_to :org, :primary_key => :org_id
end
class Org < ActiveRecord::Base
#define primary key because it is not :id
#because this table is in an old db
#that can't be changed
set_primary_key :org_id
has_one :user
def full_name
"#{emp_fname} #{emp_lname}"
end
end
确切错误
NoMethodError(当你没想到它时,你有一个零对象! 您可能期望一个Array实例。 评估nil.each时发生错误:
答案 0 :(得分:0)
您使用的是什么版本的导轨?你的标签说3 - 是3.1还是3.0.x系列之一?无论如何,它似乎在3.0.x中:包含find
isn't supported的哈希语法。
尝试User.includes(:org).find(:all)
。
答案 1 :(得分:0)
好的,经过大量的挖掘和反复试验后,基本上它是在一个模式中有一个表而在另一个模式中有另一个表的组合。通过为活动记录对象指定完全限定的表名,活动记录会自行停止。
所以最后的代码:
被叫代码
def index
@users = User.includes(:org)
end
类
class User < ActiveRecord::Base
set_table_name "DOC_REQUEST.USERS"
belongs_to :org, :primary_key => :org_id
end
class Org < ActiveRecord::Base
set_table_name "AOS.ORG"
#define primary key because it is not :id
#because this table is in an old db
#that can't be changed
set_primary_key :org_id
has_one :user
def full_name
"#{emp_fname} #{emp_lname}"
end
end