這裏是我的schema.rb軌道4遷移:Mysql2 ::錯誤:數據太長,列「XXXX」
create_table "users", force: true do |t|
t.string "name", limit: 6
t.string "email"
t.datetime "created_at"
t.datetime "updated_at"
end
我設置FO字符串列「名」的限制。
然後,在控制檯:
user = User.new(name:"1234567890",email:"[email protected]")
user.save!
它引發的錯誤:
ActiveRecord::StatementInvalid: Mysql2::Error: Data too long for column 'name' at row 1: INSERT INTO `users` (`created_at`, `email`, `name`, `updated_at`) VALUES ('2014-06-19 15:08:15', '[email protected]', '1234567890', '2014-06-19 15:08:15')
但是,當我切換到軌道3。
我發現它截斷字符串 「」 自動,並將其插入 「」 到數據庫沒有錯誤。
有沒有什麼關於這個已被刪除rails 4?
我應該自己在模型中添加一些截斷函數嗎?謝謝!
對於最後一個問題,它可能取決於你的使用情況爲'User'創作。也許最好在':name'上添加一個驗證器來檢查長度,如果用戶結束時間過長,會向用戶顯示一個錯誤? –
驗證可能是要走的路,因爲用戶應該知道他們的名字不能超過6個字符。否則,當他們進入「喬納森」時他們可能會感到驚訝,但當他們看着他們的個人資料時,他們的名字被列爲「喬納特」。 –
謝謝,我明白更好的方法是添加一些驗證。但是我只想弄清楚Rails 4中發生了什麼變化,並且我有一些模型對用戶是不可見的,所以在這種情況下,驗證無法幫助我。 – tzzzoz