如何在轨道上使用ruby返回模型中的关联项?

时间:2012-01-23 04:14:57

标签: ruby-on-rails ruby-on-rails-3.1

我一直在努力使用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。我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

你想要这个:

Package.includes( :package_items ).all

注意>将第二个选项传递给find已正式弃用,将:all:first等传递给find将在Rails 3.2中被弃用(我认为)。你应该使用finder方法Package.allPackage.first等。基本上你应该使用find的唯一时间是你有一个要作为唯一参数传递的ID或ID。

如果需要,可以为此创建一个范围,这通常比显式定义类方法更可取:

class Package < ActiveRecord::Base
  has_many :package_items

  scope :with_items, includes( :package_items )
end

然后你可以打电话,例如Package.with_items