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