2015-06-06 30 views
2

當我運行種子程序將用戶添加到我的Rails應用程序時,發生了一件非常奇怪的事情 - 其中一列完全拒絕填充。這是一個用戶填充方法,其中包含由Faker gem生成的一些元素。Rake db:seed拒絕將數據插入到特定的數據庫列

Faker項目工作得很好,插入到數據庫中,除了Faker :: Avatar方法。所以我決定嘗試用我自己的自定義字符串和隨機生成的頭像號碼。但沒有任何工作。

下面是從架構中的用戶表:

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' 

我試圖弄清楚爲什麼我不能插入任何東西到Faker或我自己的字符串的頭像列中。這似乎很奇怪!

+2

您可以附上您的用戶模型和服務器日誌的一部分嗎? – hedgesky

+0

如果您更改爲'avatar:'avatar.jpg',它會工作嗎? –

+0

我也嘗試過,'avatar-default.jpg.'也不行。 – CraneWing

回答

-1

如果您查看Ruby類Randomhere的文檔,rand方法不支持您使用的簽名。如果您將代碼更改爲:

avatar: 'avatar' + Random.rand(180).to_s + '.jpg' 
+0

即使使用此語法,該方法也不會將任何內容插入到頭像列中。 Faker :: Avatar方法也不會插入。我確實有隨機的語法錯誤,但我試圖找出爲什麼沒有插入到這一列,只有這一個。 – CraneWing

2

這是由掛載到您的頭像字段的上傳器引起的。

最簡單的解決方案是註釋掉mount_uploader行,對數據進行種子處理,然後取消註釋該行。

+0

這非常準確。謝謝 – Francisco

相關問題