0

私はこのモデルを手に入れました:

class Post
  def rating_by(ip_address, user = nil)
    if user
      ratings.where("ratings.user_id = ?", user.id).first
    else
      ratings.where("ratings.ip_address = ?", ip_address).first
    end
  end
end

お気づきかもしれませんが、ユーザーと訪問者の両方による評価を許可しています。

user_rating追加の属性を持つ json として投稿を出力したいと思います。

これは私の現在のコントローラーです:

@posts = Post.trending(10)

respond_to do |format|
  format.html
  format.json { render json: @posts.to_json  }
end

もちろん、これは表示されませんが、to_json:methodsオプションを使用してパラメーターを指定する可能性があるかどうかを知りたいです。

@posts.to_json(extra: {user_rating: "rating_by(#{request.remote_ip}, #{@current_user.id})"})

だから私は次のようなものになります:

[{ id: 54, title: "Foo", user_rating: 8 }]

他の提案は大歓迎です!

4

1 に答える 1

0

あなたの質問にコメントしましたが、詳細を追加すると思いました。

アクティブモデルシリアライザーのページから:

class PersonSerializer < ActiveModel::Serializer
  attributes :first_name, :last_name, :full_name

  def full_name
    "#{object.first_name} #{object.last_name}"
  end
end

user_ratingしたがって、シリアライザーでパラメーターを定義できます。

さらに、アクティブ モデル シリアライザーを使用すると、meta

render json: @posts, meta: {total: 10}

user_ratingしたがって、単純にコンピューターで送信することができますmeta

于 2013-08-06T23:49:17.940 に答える