0

我有一个非常简单的模型,称为处理名称和描述,其中名称不可为空。

当我将以下内容发布到 /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 包括:

宝石'导轨','4.0.2'

宝石'inherited_resources'

有任何想法吗?

4

2 回答 2

1

参数

首先,你strong params是不正确的:

  def permitted_params
     params.permit(deal: [:name])
  end

正如这篇博文和这篇github 文章中提到的,除非使用上面的代码,否则你会得到错误!


保存

如评论中所述,您的保存过程似乎绕过了您继承的资源控制器

看来您正在使用 API,因此它可能会直接发送到模型;无论哪种方式,您都必须详细说明如何保存入站数据

于 2014-01-23T13:11:09.887 回答
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

于 2014-01-23T20:34:52.867 回答