我的模型question
包含text
和token
字段。想通过脚手架将数据添加到此中。
这是我的问题_控制器
def create
# @question = Question.new(params[:question])
@question = Question.create(:text => params[:text], :security_token => Digest::SHA1.hexdigest(rand(1000000).to_s))
render :json => @question.to_ext_json(:success => @question.save)
end
当我按下“ADD”按钮时,我进入控制台:
Question Create (0.0ms) Mysql::Error: Column 'text' cannot be null: INSERT INTO `questions` (`created_at`, `updated_at`, `text`, `security_token`) VALUES('2011-04-05 09:07:37', '2011-04-05 09:07:37', NULL, 'bf44551f11ce202b88d521a1826ab6db4254ce55')
为什么COlumn'text'不能为空?
答案 0 :(得分:1)
您为text
表创建了questions
列NOT NULL
约束,params[:text]
可能是nil
。
由于您使用了脚手架形式params[:question][:text]
,因此返回text
,不 params[:text]
的内容!
答案 1 :(得分:0)
因为数据库表中的列被定义为'not null'?
答案 2 :(得分:0)
您正在将空文本值(NULL / nil)传递给已定义NOT NULL约束的数据库字段。您需要确保该文本永远不会为空或释放此约束,从而允许MySQL数据库中的NULLable fiels。
答案 3 :(得分:0)
我建议您在模型中添加验证以验证文本是否为空。因此,你将免于这个低级错误。
答案 4 :(得分:0)
这个错误与ruby或rails无关,它只是因为你已经将列定义为非null(...,因为每个人都说......:D),你可能想检查你的迁移,看看你是否定义了该列不为空。
欢呼声
sameera