2

モデルに仮想列を追加することは可能ですか (仮想属性ではありません!)?

私は次のような状況を持っています: AProduct(id, name)には多くのProductVariant(id, price, offer_price, product_id,...)

ProductVariantsすべての製品を選択すると、製品結果のすべてから最小の製品価格が得られます。

@products = Product.with_min_price.order('min_price ASC')

SQL クエリ ( ) で最低価格を計算し、この値をmy のそれぞれにwith_min_price追加したいと考えています。min_priceProduct@products result

4

2 に答える 2

4

これは、Product has_many ProductVarientsを想定した場合、Productクラスのメソッドである可能性があります。

#Product Model

def min_product_price
  product_variants.map(&:price).min
end
于 2010-12-01T17:17:30.760 に答える
2

カスタム選択でこれを行うことができますが、列は読み取り専用になります。

>> order = Order.find(:first, :select => "(id+111) as order_number")
=> #<Order order_number: "119"
>> order.order_number
=> "119"

検索の他の部分またはRails 3の同等の部分で、SQLの計算列と同じように、新しい列を使用することもできます。

于 2010-12-01T17:24:33.323 に答える