模型中的虚拟柱

发布于 2024-10-05 01:57:21 字数 444 浏览 3 评论 0原文

是否可以向模型添加虚拟列(不是虚拟属性!)?

我有以下情况: 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 值添加到我的 @products 中的每个 Product结果

Is it possible to add a virtual column to a model (not virtual attribute!)?

I have following situation:
A Product(id, name) has many ProductVariant(id, price, offer_price, product_id,...)

When I select all products I want to have the minimum product price from all ProductVariants in the products result.

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

I calculate the minimum price in a sql query (with_min_price) and want to add this min_price value to each Product in my @products result.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冷夜 2024-10-12 01:57:21

这可能只是您的 Product 类中的一个方法,假设您的 Product has_many ProductVarients

#Product Model

def min_product_price
  product_variants.map(&:price).min
end

This could just be a method in your Product class assuming your Product has_many ProductVarients

#Product Model

def min_product_price
  product_variants.map(&:price).min
end
一花一树开 2024-10-12 01:57:21

您可以使用自定义选择来执行此操作,但该列将是只读的:

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

您还可以像在查找的任何其他部分或 Rails 3 等效项中使用 SQL 中的计算列一样使用新列。

You can do this with a custom select, though the column will be read-only:

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

You can also use the new column as you would a calculated column in SQL in any of the other parts of a find or the Rails 3 equivalents.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文