是否可以向模型添加虚拟列(不是虚拟属性!)?
我有以下情况:
Product(id, name)
有许多ProductVariant(id, price, offer_price, product_id,...)
当我选择所有产品时,我希望产品结果中的所有ProductVariants
都具有最低产品价格。
@products = Product.with_min_price.order('min_price ASC')
我在sql查询中计算最低价格(with_min_price
),并希望将此min_price
值添加到Product
中的每个@products result
。
答案 0 :(得分:4)
这可能只是您的Product类中的一个方法,假设您的Product has_many ProductVarients
#Product Model
def min_product_price
product_variants.map(&:price).min
end
答案 1 :(得分:2)
您可以使用自定义选择执行此操作,但该列将是只读的:
>> order = Order.find(:first, :select => "(id+111) as order_number")
=> #<Order order_number: "119"
>> order.order_number
=> "119"
您也可以像在SQL中的任何其他部分或Rails 3等效项中的计算列一样使用新列。