我设置了这个 UserSerializer
class UserSerializer < ActiveModel::Serializer
attributes :id, :first_name, :last_name, :email, :abilities
delegate :current_user, to: :scope
delegate :current_client, to: :scope
def abilities
object.client_roles.where(client_id: current_client.id)
end
end
这来自我的 ApplicationController
class ApplicationController < ActionController::Base
serialization_scope :view_context
protected
def current_client
....
我在7:45 左右输入了基于此 railscast的“委托”代码
然后他继续说缺点是测试现在需要一个 view_context 并提供使用测试单元的解决方案。
当我运行我的规范时,我得到了两个错误之一
失败/错误:获取“show”,:id => user.id,:format => :json NoMethodError:#<#:0x00000004f69f60> 的未定义方法`current_client'
或者
失败/错误:data.active_model_serializer.new(data, {:root => name}).to_json RuntimeError: UserSerializer#current_client 委托给 scope.current_client,但范围为零:
如何在我的控制器规格中提供 view_context?
谢谢。