如何访问关联模型的值

时间:2011-07-14 03:58:03

标签: ruby-on-rails post tags

我有代码

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是正确的(一些是真的和一些错误的值)但是if post.tags(:politics)(或其他)总是返回true。我尝试使用if post.tags.politics,但这只是一个错误。

有人可以帮我解决这个问题吗。

1 个答案:

答案 0 :(得分:1)

假设您的belongs_to :post班级中有Taghas_many :tags班级中有Post,那么tags属性就是一个列表,因此您需要进行迭代在它上面:

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

或索引:

post.tags[0].politics

从外观上看,这种类型的模型并没有太多意义。也许在has_one :tag班级中Post代替。然后你可以拨打post.tag.politics