【发布时间】:2014-02-14 13:54:47
【问题描述】:
我将这个 gem 用于 cmets:https://github.com/lml/commontator
可以轻松插入此 gem 以对 cmets 进行投票:https://github.com/ryanto/acts_as_votable
我正在使用 rails 4 btw,它与两个 gem 兼容。
在我的用户模型中:
class User < ActiveRecord::Base
acts_as_voter
acts_as_commentator
has_many :comments
end
在我的评论模型中:
class Comment < ActiveRecord::Base
acts_as_votable
belongs_to :user
end
一切似乎都运行良好。但是当试图计算一个用户的总票数时(用户在所有 cmets 上收到的总票数)(业力)
<%= @user.votes.count %>
我收到此错误
undefined method `votes' for #<User:0x0000010dbf23a0>
所以我尝试了这个:
<%= @user.comments.map{|c| c.votes.count}.inject(:+) %>
导致另一个错误:
SQLite3::SQLException: no such column: commontator_comments.commontator_id: SELECT "commontator_comments".* FROM "commontator_comments" WHERE "commontator_comments"."commontator_id" = ? AND "commontator_comments"."commontator_type" = ?
我试过了:
@user.find_voted_items.count
和
@user.get_voted(Comment).count ?
和
@user.comments.collect{|c| c.votes.size}.inject(:+)
似乎没有任何效果。我猜这与 commontator gem 处理代理关联关系的方式有关。如何呈现特定用户在所有 cmets 上收到的总票数?非常感谢任何帮助!
编辑:我确实运行了所有迁移。
【问题讨论】:
-
你运行迁移了吗?
-
是的!我应该提到这一点!
-
在 commontator gem 页面中,有一个部分描述了如何与acts_as_votable 集成。你检查那部分了吗? github.com/lml/commontator#voting。看来您必须添加该设置,然后重新启动您的应用程序。
-
@KatieHeidmann 我想知道用户模型中的
has_many :comments是否导致了这一切。当您在模型中包含acts_as_commentator 时,它已经为您添加了关系。
标签: ruby-on-rails ruby ruby-on-rails-4 gem