这似乎是您在编码的初期会收到的一个错误,对于我一生来说,我无法弄清楚为什么会收到此错误。
我的代码如下:
Order.joins(:all_adjustments).where(all_adjustments.last: { source_type: "Spree::PromotionAction" } )
请帮忙!我有种感觉,我在想念一些显而易见的东西……我只是无法分辨它到底是什么!
错误:
SyntaxError: unexpected ')', expecting end-of-input: "Spree::PromotionAction" } )
预先感谢
答案 0 :(得分:4)
这归因于where(all_justments.last:
,这是无效的语法。
where
的参数必须是一个哈希,而您所拥有的不是有效的哈希。如果要在哈希中使用{key: value}
语法,则key
必须是一个符号,并且您尝试在其中放置一个表达式。
尝试
Order.joins(:all_adjustments).where(all_adjustments: { source_type: "Spree::PromotionAction" } )
根据您建立关系的方式,这可能不起作用,但它应该使您更接近真实的错误。
答案 1 :(得分:1)
在关系has_many :all_adjustments, class_name: 'Spree::Adjustment'
中,all_adjustments只是一个自定义名称,用于定义订单及其调整之间的关系(这就是为什么要指定class_name的原因)
对于查询,您需要加入关联名称(因此all_adjustments
(source)
通过此联接的结果,您可以创建一个条件,该条件使用联接中的任何表。(source)。在您的情况下,表名称为spree_adjustments
。
因此您的查询应以这种方式工作:
Spree::Order.joins(:all_adjustments).where(spree_adjustments: { source_type: "Spree::PromotionAction" } )