SQLite3::ConstraintException: constraint failed:

末鹿安然 提交于 2019-12-11 02:37:47

问题


I'm trying to learn Ruby on Rails and have encountered a problem I need help with. What I'm trying to do is to create a "project manager" with a form, but whne I'm filled in the form and clicks submit the following error is shown:

ActiveRecord::StatementInvalid in ProjectsController#create

SQLite3::ConstraintException: constraint failed: INSERT INTO "projects" ("created_at", "description", "end_date", "start_date", "title", "updated_at", "user_id") VALUES (?, ?, ?, ?, ?, ?, ?)

Rails.root: /Applications/XAMPP/xamppfiles/htdocs/IDV450-labb1

Application Trace | Framework Trace | Full Trace
app/controllers/projects_controller.rb:14:in `create'

The project controller:

1.   class ProjectsController < ApplicationController
2.
3.      def index
4.        @projects = Project.all
5.      end
6.
7.      def new
8.        @project = Project.new
9.      end
10.
11.     def create
12.       @project = Project.new(params[:project].merge(:user_id => current_user.id))
13.
14.       if @project.save
15.         redirect_to projects_path
16.       else
17.         render :action => "new"
18.       end
19.     end
20.   end

The project model:

class Project < ActiveRecord::Base
    has_and_belongs_to_many :users
    belongs_to :ticket

    attr_accessible :user_id, :title, :description, :start_date, :end_date
end

The view for new project:

<%= form_for @project do |f| %>
    <div class="text_field">
        <%= f.label :title%>
        <%= f.text_field :title%>
    </div>
    <div class="text_field">
        <%= f.label :description%>
        <%= f.text_field :description%>
    </div>
    <div class="dropdown">
        <%= f.label :start_date%>
        <%= date_select :start_date, :startdate %>
    </div>
    <div class="dropdown">
        <%= f.label :end_date%>
        <%= date_select :end_date, :enddate %>
    </div>
    <div class="select">
        <%= f.label :title%>
    </div>
    <div class="submit">
        <%= f.submit "Save" %>
    </div>
<% end %>

The db models:

Project:
    - id: int
    - user_id: int
    - title: varchar(50)
    - description: varchar(500)
    - start_date: date
    - end_date: date
    - created_at: datetime
    - updated_at: datetime

Request parameters that are sent:

{"utf8"=>"✓",
 "authenticity_token"=>"CrFUjpsRCEWRprSmKtOk4nBxsxrwaII1WKLDWMQWuUI=",
 "project"=>{"title"=>"Foo project",
 "description"=>"A little description"},
 "start_date"=>{"start_date(1i)"=>"2013",
 "start_date(2i)"=>"2",
 "start_date(3i)"=>"7"},
 "end_date"=>{"end_date(1i)"=>"2014",
 "end_date(2i)"=>"3",
 "end_date(3i)"=>"12"},
 "commit"=>"Spara"}

It really doesn't say what the problem is, but it happens on line 14 when it tries to save to the db. If I create a project in seed it works!


回答1:


Maybe you have some validation on project model or in projects table(which can be seen in schema.rb file) which is failing

Or You can try incrementally checking creating project model by removing all attributes from model and trying to create the object

Try printing the @project object and see what values its using for its creation

you should use save! rather than save

Hope it helps..

:)




回答2:


What indexes do you have on your table? You're either violating a non-null constraint (missing data) or a uniqueness constraint (duplicated data in record being inserted).



来源:https://stackoverflow.com/questions/14710551/sqlite3constraintexception-constraint-failed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!