【问题标题】:Rails How to get 2 objects using join and where on ransack?Rails如何使用join获取2个对象以及在哪里洗劫?
【发布时间】:2017-04-04 02:27:42
【问题描述】:

我正在尝试使用 ransack 获取两个关联的对象

关系

  1. Proback 属于用户
  2. Proback 属于产品
  3. 产品有_many probacks
  4. 用户 has_many probacks

但日志显示:

ActiveRecord::PreparedStatementInvalid(绑定变量的数量错误 (1 比 2)在:products.id = ?和 users.id = ?)

 @q = Proback.joins(:product,:user).where('products.id = ? and users.id =? ', @product.id,@user.id).ransack(params[:q])

有人可以给点提示吗?

【问题讨论】:

  • 你能解释一下这些模型之间的关系吗?
  • @mayank,当然!等一下!

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord ransack


【解决方案1】:

试试这个:

@q = Proback.joins(:product, :user).where('products.id = ? and users.id = ?', @product.id, @user.id).ransack(params[:q])

你错过了= ?。

【讨论】:

    【解决方案2】:

    我检查了您的代码并重新创建了场景,但没有收到任何此类错误。 我也产生了你提到的错误。

    ActiveRecord::PreparedStatementInvalid(错误数量的绑定变量(1 对 2)在:products.id = ? 和 users.id = ?)

    当我在 where 子句中传递多个或更少的绑定变量时会生成它。请重试您的代码并确保绑定变量匹配“?” :

    result = Proback.joins(:product, :user).where('products.id = ? and users.id = ?', @product.id, @user.id)
    
    @q= result.ransack(params[:q])
    

    通过这样做,错误区分将很容易

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2020-11-30
      • 2023-03-23
      • 1970-01-01
      • 2011-11-25
      • 2011-06-29
      • 1970-01-01
      • 2020-08-30
      • 2021-09-01
      相关资源
      最近更新 更多