Я делаю внутреннее соединение (по крайней мере, я думаю, что это то, что делает код), но мой поиск возвращает один и тот же результат несколько раз. Я думаю, что у меня что-то не так с моим соединением.Rails Search возвращает duplicate
Теги
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| color | varchar(255) | YES | | NULL | |
| article_id | int(11) | YES | MUL | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
Статья
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | varchar(255) | YES | | NULL | |
| info | text | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
Каждой статью я пометил и она возвращает несколько результатов на основе тегов. Поэтому, если статья содержит 3 тега, это приводит к возврату 3 записей. Даже если в каждой статье должно быть только 1 возвращено?
class Article < ApplicationRecord
has_many :tags, dependent: :destroy
validates :title, presence: true
def self.search(search)
if search
joins(:tags).where('title LIKE :search OR tags.name LIKE :search', search: "%#{search}%")
else
all
end
end
end
Удивительно ... Я помещал отчетливая до и не получая где. Ты лучший. : D – trowse