Нужна правильная формулировка для метода видимости, ищущего конкретную формулировку в объекте - PullRequest
0 голосов
/ 19 июня 2019

Я не могу определить правильную формулировку для этого метода объема.Задача состоит в том, чтобы создать метод области действия, который определяет запросы (которые имеют примечания) для отображения только запросов со словом «дети» в примечании.Кажется, я не могу получить правильную формулировку для этого

Я пытался scope :requests_with_kids_in_note, -> { where('note').includes(text: "kids")}

scope :requests_with_kids_in_note, -> { select('note').where('note').includes(text: "kids")}

сообщения об ошибках не помогают

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Вы можете сделать это очень легко с помощью областей, но вы должны отформатировать предложение where по-другому. Также я бы посоветовал сделать его более общим:

scope :note_contains, -> (word) { where('note LIKE %?%', word) }

И используйте это так:

Model.note_contains('kids')
0 голосов
/ 19 июня 2019

Вы можете использовать Arel для составления этого запроса.

Предполагая, что у вас есть Request, который имеет has_many :notes ассоциацию, вы можете написать область действия так:

class Request < ApplicationRecord
  has_many :notes

  scope :with_kids_in_note, -> {
    joins(:notes).where(Note.arel_table[:content].matches('%kids%'))
  }
end

class Note < ApplicationRecord
  # In this model, i'm assuming that "content" is the column
  # in which you have to find the word "kids".
  belongs_to :request
end
...