【发布时间】:2013-10-11 14:49:31
【问题描述】:
我设置了这个 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 左右输入了基于 this railscast 的“委托”代码
他接着说,缺点是测试现在需要一个 view_context 并给出了使用测试单元的解决方案。
当我运行我的规范时,我遇到了两个错误之一
失败/错误:获取“显示”,:id => user.id,:格式=>:json 无方法错误: #
的未定义方法`current_client'
或
失败/错误:data.active_model_serializer.new(data, {:root => 名称}).to_json 运行时错误: UserSerializer#current_client 委托给 scope.current_client,但范围为零:
如何在我的控制器规范中提供 view_context?
谢谢。
【问题讨论】:
标签: ruby-on-rails ruby rspec active-model-serializers