Я думаю, что схожу с ума.
Допустим, у меня есть 3 модели: Адрес, Склад, Категория:
class Address < ActiveRecord::Base
belongs_to :category
belongs_to :addressable, :polymorphic => true
scope :billing_addresses , where(:categories => {:name => 'billing'}).joins(:category)
scope :shipping_addresses , where(:categories => {:name => 'shipping'}).joins(:category)
end
class Category < ActiveRecord::Base
has_many :addresses
has_many :subcategories, :class_name => "Category", :foreign_key => "category_id"
belongs_to :category, :class_name => "Category"
end
class Warehouse < ActiveRecord::Base
has_many :addresses, :as => :addressable
end
Адрес является полиморфным, поскольку в конечном итоге я буду использовать его для хранения адресов для клиентов, людей, сотрудников и т. Д. Также каждый адрес может быть определенного типа: выставление счетов, доставка, работа, дом и т. Д.
Я пытаюсь вытащить некоторую информацию на странице.
@some_warehouse = Warehouse.first
Тогда, на мой взгляд:
%b= @some_warehouse.name
%b= @some_warehouse.billing_address.address_line_1
Etc.
Я заканчиваю поиск по каждой строке информации.
Я пытался делать такие вещи, как
Warehouse.includes(:addresses).where(:name => "Ware1")
Warehouse.joins(:addresses).where(:name => "Ware1")
И различные варианты этого.
Независимо от того, что я делаю, я не могу получить рельсы для предварительной загрузки всех столов. Что я делаю не так?