调用我的API端点时,我收到此错误:
ActiveModel :: ForbiddenAttributesError(ActiveModel :: ForbiddenAttributesError):
day_points_api.rb
module V1
class DayPointsApi < Grape::API
namespace 'api/v1' do
resource :points do
desc 'start all metrik jobs'
params do
requires :product, type: String
requires :type, type: String
requires :value_at, type: Date
requires :points, type: Array do
requires :platform, type: String
requires :country, type: String
requires :value, type: Float
end
end
post do
params[:points].each do |point|
point_params = point.merge(params.except(:points))
DayPoint.constantize.import(point_params)
end
end
end
end
end
end
显然,这是由StrongParameter引起的 - 但说实话,我已经定义了所需的参数 - 这些参数应该是默认允许的唯一参数。
有一些解决方案using helper methods - 我发现这些解决方案很难看。
这怎么可能?还有其他选择吗?
答案 0 :(得分:3)
在其他地方搜索互联网后,我在official Grape Docs找到了解决方案 - 这是一个冠军! /讽刺
如果你的Rails版本是4.0+并且应用程序使用了 默认模型层的ActiveRecord,你会想要使用 hashie-forbidden_attributes gem。此gem禁用安全性 模型层的strong_params功能,允许你使用 相反,葡萄自己的params验证。
我将此添加到SO中以帮助任何应该像我一样绊倒的人。