在我的project.rb模型中,我正在尝试使用动态变量创建一个范围:
scope :instanceprojects, lambda {
where("projects.instance_id = ?", current_user.instance_id)
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
undefined local variable or method `current_user' for #<Class:0x102fe3af0>
Run Code Online (Sandbox Code Playgroud)
在控制器中我可以访问的位置current_user.instance_id......模型是否有理由无法访问它以及获取访问权限的方法?此外,这是创建上述范围的正确位置,还是属于控制器?
我在 rails5 中使用 Active Model Serializer 0.10.7
我想知道如何在序列化程序中访问设计 current_user。
current_user 应该默认设置为范围。
根据文档
但我的代码不能正常工作...
有人知道这个吗?
class BookSerializer < ActiveModel::Serializer
attributes :id, :title, :url, :image, :is_reviewed
def is_reviewed
object.reviews.pluck(:user_id).include?(current_user.id)
end
end
Run Code Online (Sandbox Code Playgroud)
和 Book 控制器看起来像这样。
class BooksController < ApplicationController
def index
@books = Book.order(created_at: :desc).page(params[:page])
respond_to do |format|
format.html
format.json {render json: @books, each_serializer: BookSerializer}
end
end
end
Run Code Online (Sandbox Code Playgroud)