Я пытаюсь создать канал в Rails, используя acts_as_taggable_on
, и у меня возникают небольшие проблемы.
В моем приложении есть пользователи, которые принадлежат к группам, и каждый пользователь выбирает для себя несколько тегов, используя контекст plays_as_taggable_on :user_tags
. Пользователи создают сообщения, которые также имеют теги, но имеют контекст :post_tags
.
Я пытаюсь создать канал для текущего пользователя, состоящий из сообщений из его / ее группы, которые имеют по крайней мере один :post_tag
общий с :user_tags
текущего пользователя. Так, например, если у меня есть пользователь, который выбирает «Разработчик, Дизайнер» как два :user_tags
, я бы хотел вернуть все сообщения из его / ее Группы, в которых «Разработчик» и / или «Дизайнер» указаны как :post_tags
.
После нескольких часов возни вот что я пробовал в post.rb
, но это дало мне ошибку («ОШИБКА: столбец 'tag_id' не существует LINE 1»), что кажется странным, учитывая, что tag_ids существуют для тегов.
# Returns posts with tags also attributed to the given user.
def self.from_posts_matching_tags_of(user)
matching_tag_ids = "SELECT tag_id FROM taggings
WHERE taggable_id = :user_id"
where("tag_id IN (#{matching_tag_ids}) OR user_id = :user_id", user_id: user)
end
Мы будем очень благодарны за любые предложения о том, как правильно создать такой метод подачи. И если есть какой-либо другой соответствующий код, которым вы хотите, чтобы я поделился, просто дайте мне знать.