相关疑难解决方法(0)

Rails 3设计,在模型中无法访问current_user?

在我的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......模型是否有理由无法访问它以及获取访问权限的方法?此外,这是创建上述范围的正确位置,还是属于控制器?

activerecord ruby-on-rails ruby-on-rails-3

46
推荐指数
3
解决办法
4万
查看次数

如何在活动模型序列化程序中使用设计 current_user

我在 rails5 中使用 Active Model Serializer 0.10.7

我想知道如何在序列化程序中访问设计 current_user。

current_user 应该默认设置为范围。

根据文档

https://github.com/rails-api/active_model_serializers/blob/0-10-stable/docs/general/serializers.md#controller-authorization-context

但我的代码不能正常工作...

有人知道这个吗?

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)

ruby-on-rails devise active-model-serializers

5
推荐指数
2
解决办法
4281
查看次数