我得到了这个模型:
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
您可能会注意到,我允许用户和访问者进行评分。
我想将帖子输出为json,并附加user_rating
属性。
这是我目前的控制人员:
@posts = Post.trending(10)
respond_to do |format|
format.html
format.json { render json: @posts.to_json }
end
当然这不会显示它,但我想知道是否有可能使用to_json
的{{1}}选项并指定参数,例如:
:methods
所以我最终得到了类似的东西:
@posts.to_json(extra: {user_rating: "rating_by(#{request.remote_ip}, #{@current_user.id})"})
非常欢迎其他建议!
答案 0 :(得分:0)
我评论了你的问题,但我想我会补充一些细节。
来自Active Model Serializers' page:
class PersonSerializer < ActiveModel::Serializer
attributes :first_name, :last_name, :full_name
def full_name
"#{object.first_name} #{object.last_name}"
end
end
因此,您可以在序列化程序中定义user_rating
参数。
此外,Active Model Serializers允许使用meta
render json: @posts, meta: {total: 10}
因此,您只需将计算机user_rating
与meta
一起发送即可。