我寫了一個小代碼來測試我的模型Icd3Code
的有幾個值,這些值的長度大於255
。我這樣做是因爲我首先將模型中的所有字段定義爲text
,但並非所有屬性都需要這麼多空間!所以我想一些屬性改變爲string
:檢查模型的屬性
我的代碼:
arr = Icd3Code.new.attributes.keys
Icd3Code.all.each do |f|
arr.each do |a|
if f.a.length >= 255
puts a
end
end
end
Icd3Code.new.attributes.keys
給了我這樣的輸出和那一個問題: ["id", "abrechenbar", "alter_fehler", "alter_o"
因爲所有strings
!
就是說f.a.length
返回一個錯誤:
method_missing': undefined method `a' for #<Icd3Code:0x7f395f0> (NoMethodError)
我怎麼能解決這個問題?謝謝
如果你碰巧使用PostgreSQL作爲數據庫注意有沒有*使用文本,而不是爲varchar(字符串)數據類型時發生*空間或性能損失。 –
@AndrewMarshall這是一個很好的觀點!我不知道!你必須知道新的PostgreSQL!在問這個問題之前,我試圖將我的sqlite3數據庫更改爲postgresql!不知何故,我總是得到錯誤'類型varching(255)長'或類似的東西!所以我改變了我的遷移到文本!然後試圖找出至極的屬性阻止了我的'db:seed'!但如果你說沒有性能損失,我的問題是無用的哈哈!謝謝!也許你可以發佈答案? –
我的評論並沒有像現在這樣真正回答你的問題,並且對於其他數據庫來說,實際的答案仍然有用,但這不是真的':)'。 (在PostgreSQL中,varchar實際上是在文本之上實現的,這就是爲什麼這是真的。) –