我一直在努力使用rails模型,可以使用一些指导。我有两个模型:Package和Package_item。包有许多与它们相关联的package_items,我试图弄清楚如何在一个方法中返回包信息以及packge_items数组。
class Package < ActiveRecord::Base
has_many :package_item
def self.dump
Package.find(:all,
:select => "packages.*, packge_items.*")
end
end
class PackageItem < ActiveRecord::Base
belongs_to :package
belongs_to :product
end
我创建了Package.dump,它没有返回package_items。我在这里缺少什么?
答案 0 :(得分:2)
你想要这个:
Package.includes( :package_items ).all
(注意>将第二个选项传递给find
已正式弃用,将:all
,:first
等传递给find
将在Rails 3.2中被弃用(我认为)。你应该使用finder方法Package.all
,Package.first
等。基本上你应该使用find
的唯一时间是你有一个要作为唯一参数传递的ID或ID。
如果需要,可以为此创建一个范围,这通常比显式定义类方法更可取:
class Package < ActiveRecord::Base
has_many :package_items
scope :with_items, includes( :package_items )
end
然后你可以打电话,例如Package.with_items
。