我試圖在Rails中以非常快速和骯髒的方式運行查詢,而沒有將模型的其餘部分放在適當位置。我知道這是不好的做法,但我只需要在緊張的時間內得到一個快速結果,直到我已經完成整個解決方案。在Rails中查找_by_sql,訪問產生的數組
我有物品有運費價格,基於重量。重量存儲在該項目中,價格是存儲在表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返回'Array'。嘗試使用[0](或任何其他整數)訪問數組將返回空白。
是否有另一種方式來訪問此,或者我缺少一些基本的東西?
什麼是'd.weight'? –
那麼發現,應該是i.weight - 我只是想通過使用'item'使數據變得有點泛化,並且我沒有做出所有正確的更改 –