Rails 3 Ruby 1.9
我的应用程序有一个购物车和以下模型line_items,订单和产品。 Products模型具有2个价格属性msrp和discount_price,line_items模型具有product_price属性
我正在尝试编写一个辅助方法,该方法接受product_id,遍历所有已完成的订单,并选择并汇总product_price = msrp的行项目。
我的产品型号
class Product < ActiveRecord::Base
has_many :line_items
has_many :orders, through: :line_items
end
我的订单型号
class Order < ActiveRecord::Base
has_many :line_items, dependent: :destroy
end
我的Line_Items模型
class LineItem < ActiveRecord::Base
belongs_to :order
belongs_to :product
belongs_to :cart
def self.total_sold_msrp(product)
where("line_items.order_id IS NOT NULL AND line_items.product_id = product.id AND line_items.product_price = product.msrp")
end
end
助手模块
module StoreHelper
def full_price_qty_sold (product)
full_price_qty_sold = product.line_items.total_sold_msrp(product).sum("quantity")
end
end
当我执行程序时,我收到此错误 “SQLException:没有这样的列:product.id product.msrp”
看起来app正在查找名为product.id和product.msrp的列,而不是在查询SQL表时使用product.id和product.msrp的实际值。
答案 0 :(得分:1)
看起来app正在查找名为product.id和product.msrp的列,而不是在查询SQL表时使用product.id和product.msrp的实际值。
完全。将值传递给查询的正确方法是
where("line_items.order_id IS NOT NULL AND line_items.product_id = ? AND line_items.product_price = ?", product.id, product.msrp)