我的count
表格中有一个tags
列。如果在更新时将标记添加到帖子中,我想增加标记计数,并且它已经在db中。我把它添加到我的帖子模型中:
before_update :increment_tag
def increment_tag
db_post = Post.find_by_id(self)
self.tags.each do |tag|
unless db_post.tags.include? tag
tag.update_attribute("count", tag.count + 1)
end
end
end
我从db获取帖子并测试当前标签是否已经在db中,如果是,没有任何反应,如果它不存在,它应该更新count字段。但由于某些原因,这不起作用。
答案 0 :(得分:2)
标签中不应包含Count列。您应该正确设置模型,以便执行以下操作:
db_post.tags.count
如果你做得对,你可以在你的标签中得到这个:
tag.post.tags.count
如果您的目标是查找帖子中使用标签的次数,总的来说,您可以简单地计算TagToPostColumn中的实例(如果有的话),您需要正确计算这是多次 - 很多关系。
然后你做:
TagToPostColumn.where(tag_id:someTag.id).count
count
是一个标准属性,您永远不必自己跟踪,除非您确实需要一个名为count的列来跟踪数据库中的模型之外的其他内容。但是,将其命名为除计数之外的其他东西是个好主意,因为它可能会导致模糊属性。
另外,我发现你这样做很奇怪:
db_post = Post.find_by_id(self)
为什么不只是使用self参数,而不是进行数据库查找以查找已有的帖子。