【发布时间】:2018-06-27 03:42:21
【问题描述】:
在 Rails Controller 中创建记录时,出现以下错误:
于 2018-06-27 08:11:01 为 127.0.0.1 开始 POST "/spr_type_courses"
+0500 由 SprTypeCoursesController#create 作为 HTML 参数处理:{"spr_type_course"=>{}} 不允许的参数:
:spr_type_course Sequence (3.0ms) select us.sequence_name from
all_sequences us where us.sequence_owner = 'PROJECT' and
us.sequence_name = upper('SPR_TYPECOURSES_seq') 主键(10.0ms)
SELECT cc.column_name FROM all_constraints c, all_cons_columns cc
在哪里 c.owner = 'PROJECT' AND c.table_name = 'SPR_TYPECOURSES' AND
c.constraint_type = 'P' AND cc.owner = c.owner AND cc.constraint_name
= c.constraint_name 主键触发器 (3.8ms) SELECT trigger_name FROM all_triggers WHERE 所有者 = '项目' AND trigger_name = q'[PROJECT.SPR_TYPECOURSES_PKT]' AND table_owner = '项目' AND table_name = q'[SPR_TYPECOURSES]' AND 状态 = '启用'
SQL (5.3ms) INSERT INTO "PROJECT"."SPR_TYPECOURSES"
("TYPECOURSE_ID") VALUES (:a1) [["typecourse_id", 3623]] 已完成 500 61 毫秒内的内部服务器错误
ActiveRecord::NotNullViolation (OCIError: ORA-01400: cannot insert
NULL into ("PROJECT"."SPR_TYPECOURSES"."DATE_BEGIN"): INSERT INTO
"PROJECT"."SPR_TYPECOURSES" ("TYPECOURSE_ID") VALUES (:a1)):
app/controllers/spr_type_courses_controller.rb:17:in `create'
这意味着什么以及需要做些什么来纠正它?
class SprTypeCoursesController < ApplicationController
before_action :set_spr_type_course, only: [:show, :update, :destroy]
def index
@spr_type_courses = SprTypeCourse.all
render json: @spr_type_courses
end
def show
render json: @spr_type_course
end
def create
@spr_type_course = SprTypeCourse.new(spr_type_course_params)
if @spr_type_course.save
render json: @spr_type_course, status: :created, location: @spr_type_course
else
render json: @spr_type_course.erros, status: :unprocessable_entity
end
end
def update
if @spr_type_course.update(spr_type_course_params)
render json: @spr_type_course
else
render json: @spr_type_course.errors, status: :unprocessable_entity
end
end
def destroy
@spr_type_course.destroy
end
private
def set_spr_type_course
@spr_type_course = SprTypeCourse.find(params[:id])
end
# Only allow a trusted parameter "white list" through.
def spr_type_course_params
params.permit(
:typecourse_id,
:date_begin,
:date_end,
:name,
:comments,
:active_id
)
end
end
【问题讨论】:
-
在创建“项目”的位置显示您的 db/schema.rb 文件。错误消息暗示“BEGIN_DATE”可能不是 NULL。
-
我没有这个文件,我远程连接到数据库
-
您需要了解数据库结构的详细信息才能对其进行编程。
-
@user9997575 你可以发布form_for,从html表单部分调用。
-
在您的帖子中添加您使用的数据库类型。如果是 MySQL,请运行
SHOW CREATE TABLE PROJECTS以查看它是否允许 NULL 存在。对于其他数据库,运行为该表转储您的架构的等效项。
标签: ruby-on-rails