【问题标题】:Relation passed to #or must be structurally compatible. Incompatible values: [:joins]传递给 #or 的关系必须在结构上兼容。不兼容的值:[:joins]
【发布时间】:2019-06-26 21:23:31
【问题描述】:

我收到此错误消息 Relation passed to #or must be structurally compatible. Incompatible values: [:joins]

在我的用户模型中:has_many :orders

在我的订单型号中:belongs_to :user, optional: true

我应该如何编写查询以在同一搜索输入中包含用户名和订单 ID?

def filter_orders
  return if params[:query].blank?
  @orders = Order.joins(:user).where('lower(users.first_name) LIKE ?', "%#{params[:query][:keyword]}%")
  .or(Order.joins(:user).where('lower(users.last_name) LIKE ?', "%#{params[:query][:keyword]}%"))
  .or(Order.where(id: "#{params[:query][:keyword]}.to_i"))
end

【问题讨论】:

  • 你能发布更多代码吗?特别是 User 和 Order 模型?
  • 我添加了关系:)

标签: sql ruby-on-rails


【解决方案1】:

这听起来像是知道issue.or。尝试使用 SQL,或者您可以覆盖 .or,如以下答案所示:https://stackoverflow.com/a/40742512/10987825

【讨论】:

    猜你喜欢
    • 2018-02-25
    • 2021-10-24
    • 2017-04-06
    • 2021-01-22
    • 2019-12-16
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多