モデルの残りの部分を配置せずに、Railsで非常に素早く汚い方法でクエリを実行しようとしています。私はこれが悪い習慣であることは承知していますが、全体の解決策が得られるまでの間、短期間で迅速な結果が必要です。Railsのfind_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」から引き出されている価格ですdb、正しいです。 @ item.shipping_price.classは 'Array'を返します。 [0](または他の整数)を使用して配列にアクセスしようとすると、空白が返されます。
これにアクセスする別の方法はありますか、何か基本的なものがありませんか?
'd.weight'とは何ですか? –
これはi.weightでなければなりません - 私はちょうど 'item'を使ってデータを少し一般的にしようとしていましたが、私はすべての正しい変更をしませんでした –