Tip 1. 默認(rèn)情況下,Rails認(rèn)為類名是單數(shù),表明是復(fù)數(shù)形式。
如果你不喜歡這樣的行為可以在配置文件(config/environment.rb)中設(shè)置一個全局標(biāo)識來禁用它。
ActiveRecord::Base.pluralize_table_names = false
Tip 2.默認(rèn)情況下,ActiveRecord會使用推導(dǎo)表明的算法,如果你不希望使用此算法可以在指定的model中使用 "set_table_name" 方法,例如:
class Sheep < ActiveRecord::Base
?set_table_name "sheep"
end
Tip 3.SQL 類型和Ruby 類型之間的對應(yīng)關(guān)系可能會在 decimal 類型的精度上出現(xiàn)問題。SQL的 demimal,numeric,float,double 都對應(yīng) Ruby 的 Float。可以使用聚合對象 composed_of 對字段進(jìn)行處理。?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Tip 4.ActiveRecord會盡量的把從數(shù)據(jù)庫中獲取的值轉(zhuǎn)換為Ruby的類型(譬如說,假設(shè)數(shù)據(jù)庫字段是 timestamp 類型的,就會返回 Time 對象)。如果你希望得到一個屬性的原始值,可以在屬性名稱后面加上 _before_type_cast.
Tip 5.Ruby 認(rèn)為:除了 nil 和 false 之外的所有值都被解釋為 true。所以,如果要查詢一個 boolean 型字段的狀態(tài),就必須在字段名的后面加上一個問號:
user = User.find_by_name("Dave")
if user.superuser? # 不可以使用 user.superuser,否則不論數(shù)據(jù)庫中存儲的是數(shù)字 0、字符串 f 還是德語的 N,此條件都將成立。
?grant_privileges
end