Как получить доступ к значениям связанной модели - PullRequest
0 голосов
/ 14 июля 2011

У меня есть код

def showTags(post)
    tagString = ''
    tagString += "Politics " if post.tags(:politics)
    tagString += "Technology " if post.tags(:technology)
    tagString += "Entertainment " if post.tags(:entertainment)
    tagString += "Sports " if post.tags(:sports)
    tagString += "Science " if post.tags(:science)
    tagString += "Crime " if post.tags(:crime)
    tagString += "Business " if post.tags(:business)
    tagString += "Social " if post.tags(:social)
    tagString += "Nature " if post.tags(:nature)
    tagString += "Other " if post.tags(:other)

    return tagString
end

Модель моих тегов имеет 10 логических значений (политика, технологии и т. Д.) И belongs_to :post. Когда вы делаете новое сообщение, есть флажки, которые соответствуют каждому полю. Таким образом, после создания поста есть некоторые истины и некоторые ложные значения. Проблема возникает, когда я вызываю этот метод в post # index, чтобы показать, какие теги принадлежат этому посту. Проблема в том, что отображаются все слова, я играл с консолью, и post.tags верны (некоторые значения true и некоторые значения false), однако if post.tags(:politics) (или что-то еще) всегда возвращает true. Я попытался использовать if post.tags.politics, но это просто выдало ошибку.

Может кто-нибудь, пожалуйста, помогите мне с этим.

1 Ответ

1 голос
/ 14 июля 2011

Если у вас есть belongs_to :post в вашем Tag классе и has_many :tags в вашем Post классе, тогда атрибут tags является списком, поэтому вам нужно либо повторить его:

post.tags.each {|tag| puts tag.politics}

Или индексировать в нем:

post.tags[0].politics

С внешней точки зрения этот тип модели не имеет особого смысла.Возможно, вместо этого сделайте has_one :tag в классе Post.Тогда вы можете позвонить post.tag.politics.

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