class Order < ActiveRecord::Base
has_many :line_items
end
class LineItem < ActiveRecord::Base
has_one :product
end
我想用产品名称排序我的订单。我试着按照其他回答的建议去做。
Order.last.line_items.includes(:product).order('products.name ASC')
但它抛出一个错误
ActiveRecord::StatementInvalid: PG::Error: ERROR: column reference "created_at" is ambiguous
2条答案
按热度按时间rjjhvcjd1#
我想你在模型
LineItem
中定义了default_scope
,类似于这样:default_scope { order(created_at: :asc) }
Order.last.line_items
将按created_at
排序,但表products
也有列created_at
,所以column reference "created_at" is ambiguous
。要解决这个问题,有一些选择:
default_scope
:default_scope { order('line_items ASC') }
unscope(:order)
或reorder(nil)
Order.last.line_items.includes(:product).unscope(:order).order('products.name ASC')
txu3uszq2#
SQL中有模糊的信息。尝试将references添加到代码中: