【发布时间】:2019-10-13 05:14:31
【问题描述】:
我正在创建一个基本的用户迁移,我正在尝试使用 Faker gem 为其播种,当我执行 rake db:repopulate(即 db:drop、db:create、db:migrate、db:seed)时它一直在 db:seed 失败。我得到一个 NoMethodError: undefined method `create!'对于#,问题是它似乎创建了一个用户,但随后它失败了,我似乎可以理解为什么..我在一个类似的项目中做了同样的事情并且没有遇到这个错误,我已经检查了类似的问题和一直没能解决。
我首先认为这是可能导致迁移和任务/db.rake 出现问题的名称,所以我修复了它,但它没有改变,然后我尝试使用迁移约定的名称,但效果不佳.
20191013045256_create_users.rb:
class CreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|
t.string :email
t.string :encrypted_password
t.timestamps
end
end
end
schema.rb:
ActiveRecord::Schema.define(version: 2019_10_13_045256) do
create_table "users", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t|
t.string "email"
t.string "encrypted_password"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
end
tasks/db.rake:
require 'faker'
require 'bcrypt'
namespace :db do
desc "Drop, create, migrate, seed and repopulate with sample data"
task repopulate: [:drop, :create, :migrate, :seed, :fakeit] do
puts "Done"
end
desc "TODO"
task fakeit: :environment do
10.times do
CreateUsers.create!(
email: Faker::Internet.email,
encrypted_password: BCrypt::Password.create(Faker::Internet.password)
)
end
end
end
我希望在我的数据库中为用户迁移创建 10 个用户,但我得到了这个 NoMethodError: undefined method `create!'
【问题讨论】:
-
User.create!代替?CreateUsers是什么?服务? -
我试过了,还是一样的错误
标签: ruby-on-rails migration faker