检查当前用户是否已使用thumbs_up gem投票

时间:2013-03-10 22:37:50

标签: ruby-on-rails ruby-on-rails-3

我想检查登录用户是否已为特定帖子投了一票。我想在Post的JSON属性中添加一个属性来执行此操作。以下是Post模型的相关代码:

  def user_has_voted
    if current_user?
      self.voted_by(current_user)
    end
  end

  def self.public_models(posts)
    posts.to_json({:include => {:user => { :only => [:uid, :email] }, :company => { :only => :name} }, :methods => [:image_url, :total_votes, :user_has_voted]}).html_safe
  end

user_has_voted方法存在问题,因为我收到以下错误:

undefined local variable or method `current_user' for #<Post:0x00000004d8eab0>

我认为问题在于当前用户不会被个别Post的范围看到。我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:1)

我避免尝试在模型中定义to_json或as_json。我认为最好使用类似jbuilder的东西,这将允许你描述的用例。我强烈建议查看关于jbuilder的轨道广播。

但是,如果您想继续使用当前结构,可以按照示例集here进行操作。简而言之,您可以将选项传递给as_json方法,该方法将包括当前用户。他们建议使用RABL作为jbuilder的替代品。祝你好运。