Задать вопрос
@DartNyan

Где моя ошибка (scope)?

Привет.
Не могу понять, что не так.

scope :between, -> (sender_id, recipient_id) do
    where(“(conversations.sender_id = ? AND conversations.recipient_id = ? ) OR
    (conversations.sender_id = ? AND conversations.recipient_id = ? )”,
    sender_id, recipient_id, recipient_id, sender_id)
  end


Погуглил примеры - вроде все правильно, но ругается кучей ошибок на синтаксис.

/home/dartnyan/Projects/instagram_app/app/models/conversation.rb:10: syntax error, unexpected '?' ...“(conversations.sender_id = ? AND conversations.recipient_... ... ^ /home/dartnyan/Projects/instagram_app/app/models/conversation.rb:10: syntax error, unexpected '?' ... conversations.recipient_id = ? ) OR ... ^ /home/dartnyan/Projects/instagram_app/app/models/conversation.rb:11: syntax error, unexpected '?' ... (conversations.sender_id = ? AND conversations.recipient_... ... ^ /home/dartnyan/Projects/instagram_app/app/models/conversation.rb:11: syntax error, unexpected '?' ... conversations.recipient_id = ? )”, ... ^ /home/dartnyan/Projects/instagram_app/app/models/conversation.rb:12: syntax error, unexpected ')', expecting '='


Rails 5.0, Ruby 2.3
  • Вопрос задан
  • 153 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
rusrails.ru/active-record-query-interface
Параграф 14.1.
Там скоуп с аргументом выглядит так "scope :created_before, ->(time) { where("created_at < ?", time) }"

У вас судя по всему кавычки не те.
Ответ написан
inf
@inf
DevOps Engineer
conversations это ассоциированная модель? Возможно стоит делать join.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы