モデルの残りの部分を配置せずに、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] (またはその他の整数) を使用して配列にアクセスしようとすると、空白が返されます。
これにアクセスする別の方法はありますか、それとも基本的なものが欠けていますか?