Rake db:seed拒绝将数据插入特定的数据库列

时间:2015-06-06 19:39:36

标签: ruby-on-rails ruby

当我运行种子程序将用户添加到我的Rails应用程序时,我发生了一件非常奇怪的事情 - 其中一个列绝对拒绝填充。它是一个用户填充方法,其中一些元素由Faker gem生成。

Faker项目工作正常并插入到数据库中,Faker :: Avatar方法除外。所以我决定尝试使用随机生成的头号编号的自定义字符串。但没有任何效果。

以下是架构中的Users表:

create_table "users", force: :cascade do |t|
t.string   "email",                  limit: 191,   default: "", null: false
t.string   "encrypted_password",     limit: 191,   default: "", null: false
t.string   "reset_password_token",   limit: 191
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer  "sign_in_count",          limit: 4,     default: 0,  null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string   "current_sign_in_ip",     limit: 191
t.string   "last_sign_in_ip",        limit: 191
t.datetime "created_at"
t.datetime "updated_at"
t.string   "first_name",             limit: 45
t.string   "last_name",              limit: 45
t.string   "username",               limit: 30
t.string   "location",               limit: 191
t.text     "profile",                limit: 65535
t.string   "avatar",                 limit: 191
  end

以下是用户的播种方法:

1.times do
   user = User.create!(
   first_name: Faker::Name.first_name,
   last_name: Faker::Name.last_name,
   username: Faker::Internet.user_name,
   email: Faker::Internet.safe_email,
   password: Faker::Internet.password(8, 16),
   location: Faker::Address.city + ', ' + Faker::Address.state,
   profile: Faker::Lorem.sentence(rand(15..60)),
   avatar: 'avatar' + Random.rand(1...180).to_s + '.jpg'

我试图找出为什么我不能在Fatar或我自己的字符串中插入任何内容。这看起来很奇怪!

2 个答案:

答案 0 :(得分:2)

这是由安装到您的头像字段的上传器引起的。

最简单的解决方案是注释掉mount_uploader行,播种数据,然后取消注释该行。

答案 1 :(得分:-1)

如果查看Ruby类Random here的文档,rand方法不支持您使用的签名。如果您将代码更改为:

,这应该有效
avatar: 'avatar' + Random.rand(180).to_s + '.jpg'