在制作中,我有一个模型类别。当我尝试在网站上创建一个类别时,我收到以下错误
ActiveRecord::StatementInvalid (PG::NotNullViolation: ERROR: null value in column "name" violates not-null constraint
迁移看起来像这样
class CreateCategories < ActiveRecord::Migration
def up
create_table :categories do |t|
t.references :supercategory, index: true
t.string :name
t.timestamps null: false
end
Category.create_translation_table! name: :string
end
....
end
架构
create_table "categories", force: :cascade do |t|
...
t.string "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "slug"
t.index ["restaurant_id"], name: "index_categories_on_restaurant_id", using: :btree
t.index ["slug"], name: "index_categories_on_slug", unique: true, using: :btree
t.index ["supercategory_id"], name: "index_categories_on_supercategory_id", using: :btree
end
任何可能导致错误的想法?谢谢! 如果您需要更多代码,请询问。
EDIT 发送的参数
参数:{“utf8”=&gt;“✓”, “authenticity_token”=&gt; “中no3uGNSYkgClG + y6y9Y =”, “category”=&gt; {“name”=&gt;“Coffee”,“age_restriction”=&gt;“0”, “available_all_day”=&gt;“0”,“supercategory_id”=&gt;“”, “化身”=&GT;#, @ original_filename =“coffee.JPG”,@ content_type =“image / jpeg”, @ headers =“Content-Disposition:form-data; name = \”category [avatar] \“; filename = \“coffee.JPG \”\ r \ nConContent-Type:image / jpeg \ r \ n“&gt;}, “commit”=&gt;“创建类别”,“remotipart_submitted”=&gt;“true”, “X-Requested-With”=&gt;“IFrame”,“X-Http-Accept”=&gt;“text / javascript, application / javascript,application / ecmascript, application / x-ecmascript, / ; Q = 0.01" , “restaurant_id”=&gt; “中乞力马扎罗咖啡”}
EDIT 我试图从控制台创建一个类别,我发现该模型没有名称列。好像它还没有正确迁移。我再次删除,创建和迁移数据库,但仍未显示该列。有什么想法来自哪里?
答案 0 :(得分:0)
很难想象如果没有PostgreSQL表将该列设置为非null,您将如何获得该错误,因此我怀疑您没有使用您认为正在使用的数据库。
您可以使用以下命令检查活动记录认为哪些列设置为非空:
Category.columns.reject{|c| c.null}.map(&:name)