rails 4.2.4 中的列未设置为非空
Columns not being set to not null in rails 4.2.4
我一定是做错了,但我不知道怎么办:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :email null: false
t.string :user_name null: false
t.string :first_name null: false
t.string :last_name null: false
t.string :auth_token null: false
t.timestamps null: false
end
end
end
当我运行:bin/rake db:reset && bin/rake db:migrate && bin/rake db:seed RAILS_ENV=test
并检查 table 我看到:
CREATE TABLE users
(
id serial NOT NULL,
email character varying,
user_name character varying,
first_name character varying,
last_name character varying,
auth_token character varying,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL,
CONSTRAINT users_pkey PRIMARY KEY (id)
)
架构还显示:
create_table "users", force: :cascade do |t|
t.string "email"
t.string "user_name"
t.string "first_name"
t.string "last_name"
t.string "auth_token"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
我什至尝试删除数据库并重新 运行 迁移 - 没有。 我做错了什么?
您忘记了一个逗号:
create_table :users do |t|
t.string :email, null: false
t.string :user_name, null: false
t.string :first_name, null: false
t.string :last_name, null: false
t.string :auth_token, null: false
t.timestamps null: false
end
编辑
我不注意,我没有注意到你在第一段代码后的句子。使用 rake 任务时你错了。
你需要使用
rake db:migrate:reset
而不是
rake db:reset && rake db:migrate
- db:reset 运行 db:drop、db:schema:load、db:seed
- db:migrate:reset 运行 db:drop, db:create, db:migrate
我一定是做错了,但我不知道怎么办:
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :email null: false
t.string :user_name null: false
t.string :first_name null: false
t.string :last_name null: false
t.string :auth_token null: false
t.timestamps null: false
end
end
end
当我运行:bin/rake db:reset && bin/rake db:migrate && bin/rake db:seed RAILS_ENV=test
并检查 table 我看到:
CREATE TABLE users
(
id serial NOT NULL,
email character varying,
user_name character varying,
first_name character varying,
last_name character varying,
auth_token character varying,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL,
CONSTRAINT users_pkey PRIMARY KEY (id)
)
架构还显示:
create_table "users", force: :cascade do |t|
t.string "email"
t.string "user_name"
t.string "first_name"
t.string "last_name"
t.string "auth_token"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
我什至尝试删除数据库并重新 运行 迁移 - 没有。 我做错了什么?
您忘记了一个逗号:
create_table :users do |t|
t.string :email, null: false
t.string :user_name, null: false
t.string :first_name, null: false
t.string :last_name, null: false
t.string :auth_token, null: false
t.timestamps null: false
end
编辑
我不注意,我没有注意到你在第一段代码后的句子。使用 rake 任务时你错了。 你需要使用
rake db:migrate:reset
而不是
rake db:reset && rake db:migrate
- db:reset 运行 db:drop、db:schema:load、db:seed
- db:migrate:reset 运行 db:drop, db:create, db:migrate