Виртуальные столбцы в модели - PullRequest
2 голосов
/ 01 декабря 2010

Можно ли добавить в модель виртуальный столбец (не виртуальный атрибут!)?

У меня следующая ситуация: A 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.

Ответы [ 2 ]

4 голосов
/ 01 декабря 2010

Это может быть просто метод в вашем классе Product, предполагающий, что ваш Product имеет_many ProductVarients

#Product Model

def min_product_price
  product_variants.map(&:price).min
end
2 голосов
/ 01 декабря 2010

Вы можете сделать это с помощью пользовательского выбора, хотя столбец будет доступен только для чтения:

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

Вы также можете использовать новый столбец, как если бы вы вычисляли столбец в SQL в любом другомчасти находки или эквиваленты Rails 3.

...