我得到一个参数,例如:Grape :: API中的member_id,如
desc 'Return Events'
params do
requires :member_id, type: Integer, desc: 'Member'
end
get 'all' do
#some code
end
end
我希望将其传递给ActiveModel::Serializer
,以便我可以执行某些功能。
有什么办法可以将它传递给ActiveModel::Serializer
吗?
答案 0 :(得分:3)
使用ActiveModel::Serializers
序列化对象时,您可以将序列化程序中可用的选项传递为options
(或instance_options
或context
,{{3 }})。
例如,在Rails中,您可以传递foo
选项,如下所示:
# 0.8.x or 0.10.x
render @my_model, foo: true
MyModelSerializer.new(@my_model, foo: true).as_json
# 0.9.x
render @my_model, context: { foo: true }
MyModelSerializer.new(@my_model, context: { foo: true }).as_json
在您的序列化程序中,您可以访问options
(或instance_options
)来获取值:
class MyModelSerializer < ActiveModel::Serializer
attributes :my_attribute
def my_attribute
# 0.8.x: options
# 0.9.x: context
# 0.10.x: instance_options
if options[:foo] == true
"foo was set"
end
end
def