我有一个非常简单的模型名为Deal with name and description,其中name是不可为空的。
当我将以下内容发布到/ api / deals
时{"name":"oaeu"}
我收到错误
SQLite3 :: ConstraintException:deals.name可能不是NULL:INSERT INTO“deals”(“created_at”,“updated_at”)VALUES(?,?)
我的模特
enter code here
我的控制器
class DealsController < InheritedResources::Base
protected
def permitted_params
params.require(:deal).permit(:name)
end
end
我的模特
class Deal < ActiveRecord::Base
end
我无法弄清楚发生了什么!!!
我的Gemfile包括:
gem'trail','4.0.2'
和
gem' inherited_resources'
有什么想法吗?
答案 0 :(得分:1)
<强> PARAMS 强>
首先,您的strong params
不正确:
def permitted_params
params.permit(deal: [:name])
end
如this blog post和github post中所述,除非使用上述代码,否则会出错!
<强>保存强>
如评论中所述,您的保存过程似乎绕过您继承的资源控制器
似乎你正在使用API,所以也许它直接发送到模型;无论哪种方式,您都必须详细说明如何保存入站数据
答案 1 :(得分:0)
您似乎需要覆盖控制器中的#resource_params方法。
def resource_params
[ params.require(:deal).permit(:name) ]
end
请参阅: https://github.com/josevalim/inherited_resources/issues/236 http://blog.josemarluedke.com/posts/inherited-resources-with-rails-4-and-strong-parameters