3

すべて! は私がhas_many association with select

は、それが動作するようになりまし
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 

必要なカラムだけを選択するために、追加のhas_manyの関係を作成します。しかし、私は同じように動作協会作成したいと思います:注文を、しかし、持っている:選択オプション

has_many :orders, :through => :order_items, :select=>"price" 

しかし、私は現在上書きしたくない:注文accociationを。 これを行う方法は?

UPD ソースオプション付きの例を示します。 これは大丈夫ですが、インクルードでこのAccotiationを使用すると機能しません。

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/[email protected]/gems/activerecord-3.2.1/lib/active_record/associations/preloader/association.rb:88:in `block in associated_records_by_owner' 

UPD2

私はまた、PRIMARY_KEY選択を追加し、あなたがこのようなassotioationを使用する場合の方法を含み、問題を認識し、otherway ARは、レコードの所有者が誰であるかを知りません。

has_many :orders, :through => :order_items, :select=>"id, price" 

答えて

7

あなたはselect価格を行い、新たなrelation作成することができます。 association extensionについて

has_many :price_of_orders, :through => :order_items, 
          :source => orders, 
          :select => :price 

OR

どう?。

has_many :orders, :through => :order_items do 
    def just_price 
    select(:price) 
    end 
end 

次に、あなたは@price.orders.just_price

+0

感謝のような何かを行うことができます!できます !しかし、私がそれを使用するとエラーが発生します( 更新された質問 – Fivell

関連する問題