Как вернуть связанные элементы в модель, используя ruby ​​на рельсах? - PullRequest
1 голос
/ 23 января 2012

Я немного боролся с моделями рельсов и мог использовать некоторые рекомендации.У меня есть две модели: 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 Ответ

2 голосов
/ 23 января 2012

Вы хотите это:

Package.includes( :package_items ).all

( Примечание: Передача второй опции в find официально устарела, а передача :all, :first и т. Д. В find будет устаревшей в Rails 3.2 (я думаю) Вместо этого вы должны использовать методы поиска Package.all, Package.first и т. Д. В основном единственный раз, когда вы должны использовать find, это когда у вас есть идентификатор или идентификаторы для передачи в качестве единственного (ых) параметра (ов).

Если вы хотите, вы можете создать для этого область видимости, что часто предпочтительнее, чем явное определение метода класса:

class Package < ActiveRecord::Base
  has_many :package_items

  scope :with_items, includes( :package_items )
end

Тогда вы можете просто позвонить, например, Package.with_items.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...