все!Я хочу создать дополнительное отношение has_many для выбора только нужных столбцов
Пример
class Price < ActiveRecord::Base
self.table_name = "pricelist_prices"
has_many :order_items, :primary_key=> :city_id, :foreign_key=> :city_id
has_many :orders, :through => :order_items
end
, так что теперь это работает.Но я хотел бы создать ассоциацию, которая работает следующим образом: ордера, но имеет: select option
Пример
has_many :orders, :through => :order_items, :select=>"price"
Но я не хочу переопределять текущее: присвоение ордеров.Как это сделать?
UPD Azoto показать пример с опцией источника!Это нормально, но когда я использую эту привязку во включениях, она не работает.
Price.where(:id=>[12759,12758]).includes(:prices_from_orders)
(Object doesn't support #inspect)
Price.where(:id=>[12759,12758]).includes(:prices_from_orders).first
NoMethodError: undefined method `each' for nil:NilClass
from /Users/igorfedoronchuk/.rvm/gems/ruby-1.9.2-p180@new/gems/activerecord-3.2.1/lib/active_record/associations/preloader/association.rb:88:in `block in associated_records_by_owner'
UPD2
Я понял проблему, если вы хотите использовать такую ассоциацию в методе include, такжедобавьте выделение primary_key, иначе AR не знает, кто является владельцем записи.
has_many :orders, :through => :order_items, :select=>"id, price"