当我运行种子程序将用户添加到我的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或我自己的字符串中插入任何内容。这看起来很奇怪!
答案 0 :(得分:2)
这是由安装到您的头像字段的上传器引起的。
最简单的解决方案是注释掉mount_uploader行,播种数据,然后取消注释该行。
答案 1 :(得分:-1)
如果查看Ruby类Random
here的文档,rand
方法不支持您使用的签名。如果您将代码更改为:
avatar: 'avatar' + Random.rand(180).to_s + '.jpg'