Rails объединяют одну запись в область видимости - PullRequest
0 голосов
/ 05 декабря 2018

Допустим, есть модель под названием Комментарии.Нет, мы делаем @comments = Comment.where(name: 'John').Далее мы делаем comment = Comment.find_or_create_by(...).Есть ли способ в Rails присоединиться comment к @comments?Для массивов я могу сделать @comments << comment, но я хочу activeRecords ...

@comments.inspect возвращает "#<ActiveRecord::Relation []>"

Я использую рельсы 5.1.3

Спасибо,Andreas

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

@comments будет массивом экземпляров Comment.comment будет экземпляром Comment.Поэтому нет ничего плохого в том, чтобы делать @comments << comment, и это приведет к желаемому результату.

0 голосов
/ 05 декабря 2018

Да, вы можете сделать что-то вроде этого, если вам нужны данные в формате активной записи.

Comment.where(conditions).or(Comment.where(id: 1))

Остальное решение является сложным или предоставляет данные в виде массива.

0 голосов
/ 05 декабря 2018

Вы должны попробовать, прежде чем спрашивать!

В Active Record Relations есть все методы, доступные для массивов, поэтому вам нужно всего лишь:

@comments << comment

или

@comments.push(comment)

РЕДАКТИРОВАТЬ: пробовал выше и, кажется, работает для меня, но другое решение:

ids = @comments.collect(&:id)
@comments = Comment.where(id: (ids + comment.id))

Это будет взять идентификаторы из каждой записи в @comments, а затем добавить их к идентификатору другого комментария, затем верните все комментарии с идентификатором в этом диапазоне

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...