Ruby on rails 检查当前用户是否已使用竖起的拇指投票

Ruby on rails 检查当前用户是否已使用竖起的拇指投票,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我想检查登录的用户是否对某个帖子投了票。我想在帖子的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 => [:ui

我想检查登录的用户是否对某个帖子投了票。我想在帖子的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
用户\u投票的方法存在问题,因为我得到以下错误:

undefined local variable or method `current_user' for #<Post:0x00000004d8eab0>
未定义的局部变量或方法“当前用户”#

我认为问题在于,当前用户看不到个人帖子的范围。如何解决这个问题?

我避免了在模型中定义to_json或as_json。我认为最好使用像jbuilder这样的东西,它将允许您描述的用例。我强烈建议你去看看铁路工人


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

问题更多的是我无法从代码内部访问当前用户。我尝试使用jbuilder,但仍然无法访问当前的\u用户。您是否将当前的\u用户设置为助手方法(假设它是应用程序控制器中的方法)?