私の子クラスは一方の親または他方の親に属することができますが、両方に属することはできないため、この問題が発生していると思います。私のコードとエラーをお見せしましょう。
class Purchase < ActiveRecord::Base # my child class
# columns = user_id, price_id and unit_price_id
belongs_to :user
belongs_to :price
belongs_to :unit_price
scope :today, lambda { joins(:unit_price, :price).
where(:price => { :date => Date.today },
:unit_price => { :date => Date.today } ) }
def total
self.price.sum(:amount) + self.unit_price.sum(:amount)
end
end
そして、私の見解ではこれをやろうとするよりも:
<%= number_to_currency(current_user.purchases.today.map(&:total)) %>
しかし、これは私にエラーを与えます:
PGError: ERROR: missing FROM-clause entry for table "price"
LINE 1: ...s"."price_id" WHERE "purchases"."user_id" = 3 AND "price"."d...
^
: SELECT "purchases".* FROM "purchases" INNER JOIN "unit_prices"
ON "unit_prices"."id" = "purchases"."unit_price_id"
INNER JOIN "prices" ON "prices"."id" = "purchases"."price_id"
WHERE "purchases"."user_id" = 3 AND "price"."date" = '2012-08-16'
AND "unit_price"."date" = '2012-08-16'
ここで何を言っているのか正確にはわかりませんが、price_id が nil であるという考えがあります。これは正しいです?もしそうなら、どうすればこの問題を解決できますか? 修正として、PricePurchase と UnitPricePurchase という 2 つの個別の購入モデルを作成する必要がありますか?
どう考えているか教えてください。
ありがとうございました。