我的模特帖子有很多关系,我想关注的是
has_many :grid_notifications, :dependent=>:destroy
我使用jbuilder将数据返回到Backbone.js图层,所以当我获取帖子时 as_json 方法被调用
def as_json(opts=nil)
out={
...
notifications: self.grid_notifications,
...
}
end
我在jBuilder docs
之后定义了视图视图/帖/ index.json.jbuilder
json.array! @posts, partial: 'posts/post', as: :post
及相关的部分观点/帖子/ _post.json.jbuilder
json.extract! post, ...other values... , :grid_notifications
通过这种方式,foreach Post它返回所有GridNotifications,无论哪个是当前用户。 因此,我想执行与Post模型相关的查询以返回当前用户而不是所有用户的GridNotifications,因此 has_many 语句变为
has_many :grid_notifications, -> { where user_id: user.id }, :dependent=>:destroy
但是这样我得到以下错误:
显示第1行引发的... / app / views / posts / index.json.jbuilder: 未定义的局部变量或方法`user'对于#
那么,我如何定义 _post.json.jbuilder 或?
答案 0 :(得分:0)
在模型Post中使用范围
scope :user_grid_notifications, -> (user) { includes(:grid_notifications).where(grid_notifications: {user_id: user.id}) }
然后
notifications: self.user_grid_notifications(current_user)