Rails Как получить 2 объекта с помощью соединения и где на обысках?

я пытаюсь использовать ransack, чтобы получить два связанных объекта

отношение

  1. Proback принадлежит пользователю
  2. Пробак относится к продукту
  3. Продукт has_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])

кто-нибудь может подсказать?


person nakapaka1    schedule 04.04.2017    source источник
comment
Вы можете объяснить взаимосвязь между этими моделями?   -  person Mayank    schedule 04.04.2017
comment
@mayank, конечно! момент!   -  person nakapaka1    schedule 04.04.2017


Ответы (2)


Попробуй это:

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

Вам не хватает = ?.

person Kavincat    schedule 04.04.2017

Я проверил ваш код и воссоздал сценарии, но не получил такой ошибки. Я также сгенерировал ошибку, которую вы упомянули.

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])

Выполняя эту ошибку, дифференциация будет легкой.

person Mayank    schedule 04.04.2017