0

ログインしたユーザーが特定の投稿に投票したかどうかを確認したい。これを行うために、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 のスコープで表示されないことだと思います。どうすればこれを修正できますか?

4

1 に答える 1

1

モデルで to_json または as_json を定義しようとすることは避けました。あなたが説明したようにユースケースを可能にするjbuilderのようなものを使用する方が良いと思います。jbuilderに関するレールキャストを見ることを強くお勧めします。

ただし、現在の構造を引き続き使用したい場合は、ここで設定された例に従うことができます。つまり、現在のユーザーを含む as_json メソッドにオプションを渡します。彼らは、jbuilder の代替である RABL を提案しています。幸運を祈ります。

于 2013-03-11T00:50:04.053 に答える