НРАВИТСЯ, но пропускает текущий пост - PullRequest
1 голос
/ 03 февраля 2020

Я пытаюсь использовать условие LIKE для поиска похожих сообщений.

Вот мой код:

    @post = Post.find(params[:id])

    @post_gsub = Post.find(params[:id]).name.gsub(/something|something else|something else again/, '')

    @related_posts = Post.where("name LIKE '%#{@post_gsub}%'")

Но когда я перетаскиваю это в представление Rails, в настоящее время всегда отображается одно совпадение - текущее сообщение в блоге, в котором находится пользователь. Как пропустить этот текущий пост в блоге, чтобы "@related_posts" отображал только уникальные рекомендации, а не пост, в котором сейчас находится пользователь?

Ответы [ 2 ]

2 голосов
/ 03 февраля 2020

Вы можете попробовать связать метод where.not . Учитывая, что вы используете Rails 3, вы можете использовать часть raw SQL:

Post.where('name LIKE ? AND id != ?', "%#{@post_gsub}%", @post.id)

Это сделает ваш запрос на добавление оператора != для получения каждого сообщения, отличного от того, чей идентификатор равен @ post.id.

1 голос
/ 03 февраля 2020

Для рельсов 3 попробуйте

Post.where('name LIKE ? AND id != ?', "%#{@post_gsub}%", @post.id)
...