我试图在 Rails 中以一种非常快速和肮脏的方式运行查询,而没有将模型的其余部分放在适当的位置。我知道这是不好的做法,但我只需要在紧迫的时间内快速获得结果,直到我得到整个解决方案。
我有根据重量计算运费的商品。重量存储在商品中,价格存储在表 shipping_zone_prices 中,我目前所做的只是查找与重量比待售商品重的第一行相关的价格:
class Item < ActiveRecord::Base
def shipping_price
item_id = self.id
shipping_price = ShippingZonePrice.find_by_sql(
"SELECT z.price as price
FROM shipping_zone_prices z, items i
WHERE i.id = '#{item_id}'
AND z.weight_g > d.weight
ORDER BY z.weight_g asc limit 1")
end
end
这类作品。SQL 完成了这项工作,但是当插入应用程序时,如下所示:
<%= @item.shipping_price %> Shipping
我得到以下显示:
[#<ShippingZonePrice price: 12>] Shipping
在此示例中,“12”是从数据库中提取的价格,并且是正确的。@item.shipping_price.class 返回“数组”。尝试使用 [0](或任何其他整数)访问数组会返回一个空白。
还有其他方法可以访问它,还是我错过了一些基本的东西?