如何从自定义 SQL 查询中提取值
How to extract values from a custom SQL query
我有以下自定义查询,我试图从中提取值,以便它们对我的应用程序有意义
@sizes = Product
.joins(:product_properties)
.joins('INNER JOIN variant_properties on product_properties.property_id = variant_properties.property_id')
.joins('INNER JOIN properties ON properties.id = product_properties.property_id AND properties.id = variant_properties.property_id AND properties.display_name = \'Size\'')
.joins('INNER JOIN variants on variants.product_id = products.id AND variants.id = variant_properties.variant_id')
.pluck('products.id as prod_id', 'LEFT(variant_properties.description,1) as short_desc', 'variants.price as price')
下面是我认为的代码
- @sizes.each do |size|
- size.each do |var|
= var.price
= link_to var.short_desc, product, class: 'hollow button tiny'
%small= number_to_currency(var.price)
问题是我收到一个错误,指出没有固定的数字或没有定义的方法
知道了,pluck
将 return 一个数组的数组,因此您不能像调用方法那样调用它的元素。应该是 size[0], size[1]... 代替.
为了便于使用,我建议您为此构建一个哈希:
@product_sizes = @sizes.each_with_object({}) do |size, result|
result[size[0]] = {
'short_desc' => size[1],
'price' => size[2]
}
end
然后在你的视图中使用它:
- @products.each_with_index do |product, i|
.product-list.grid-block
.small-8.grid-content.text-center
%h4= product.name.titlecase
- if size = @product_sizes[product.id]
= link_to size['short_desc'], product, class: 'hollow button tiny'
%small= size['price']
祝你好运!
我有以下自定义查询,我试图从中提取值,以便它们对我的应用程序有意义
@sizes = Product
.joins(:product_properties)
.joins('INNER JOIN variant_properties on product_properties.property_id = variant_properties.property_id')
.joins('INNER JOIN properties ON properties.id = product_properties.property_id AND properties.id = variant_properties.property_id AND properties.display_name = \'Size\'')
.joins('INNER JOIN variants on variants.product_id = products.id AND variants.id = variant_properties.variant_id')
.pluck('products.id as prod_id', 'LEFT(variant_properties.description,1) as short_desc', 'variants.price as price')
下面是我认为的代码
- @sizes.each do |size|
- size.each do |var|
= var.price
= link_to var.short_desc, product, class: 'hollow button tiny'
%small= number_to_currency(var.price)
问题是我收到一个错误,指出没有固定的数字或没有定义的方法
知道了,pluck
将 return 一个数组的数组,因此您不能像调用方法那样调用它的元素。应该是 size[0], size[1]... 代替.
为了便于使用,我建议您为此构建一个哈希:
@product_sizes = @sizes.each_with_object({}) do |size, result|
result[size[0]] = {
'short_desc' => size[1],
'price' => size[2]
}
end
然后在你的视图中使用它:
- @products.each_with_index do |product, i|
.product-list.grid-block
.small-8.grid-content.text-center
%h4= product.name.titlecase
- if size = @product_sizes[product.id]
= link_to size['short_desc'], product, class: 'hollow button tiny'
%small= size['price']
祝你好运!