rails 散亂記錄

2022-07-14 11:33:18 字數 2545 閱讀 5930

1)rails自動生成的目錄中,lib目錄和vendor目錄分別用於存放你自己編寫的元件或者第三方提供的元件,它們需要被你的應用程式用到,但又不專屬於你的專案。log目錄下存放的是日誌檔案,日誌檔案會針對開發環境,測試環境和生產環境分別記錄。config目錄是用來設定rails的配置的,其中包括用於配置伺服器鏈結的yml檔案和執行時環境配置檔案等。執行時環境配置可以針對三個環境分別進行設定,公共的部分在config根目錄下的environment.rb檔案中設定,而針對某個環境的設定,則在config/environments/目錄下的development.rb、production.rb、test.rb中進行個性設定。

2)在啟動web伺服器時,可以通過加上-e選項,指定啟動時選用哪個環境

ruby script/server -e development | test | production

3)rails裡強調「慣例重用配置」,從資料庫中的表,到控制器,到模型,再到檢視,命名是有關聯的!檔案的存放路徑也是有關聯的。我們在命名和存放檔案時需要遵守這種慣例。一旦我們遵守了這種慣例這四者之間的對映都是rails自動替我們去完成的,這也是rails為何能「敏捷」的重要原因。

4)在編寫普通ruby**時,如果我們想要使用另乙個檔案中的類和模組,需要先require它們,但在rails中程式設計,因為rails有命名約定,所以可以不用require它們就直接使用,rails會根據命名約定(也包括路徑約定),去自動載入該檔案!不過,也有例外的時候,如果被引用的類要在session中儲存,自動載入就會失效,但即便如此,我們也仍然不需要require,我們只需要在類裡加上一句 model :類檔名(注,小字加下劃線分隔)。

model :line_item               #rails會去載入line_item.rb檔案,其中包含lineitem類。

end幸運的是,rails的生成器很智慧型,你可以直接使用

ruby script/generate controller admin::book action1 action2

來生成你需要的路徑。

6) rails用activerecord來處理物件-關係對映(orm)。資料庫中的一張表對應著模型中的乙個類,表名是小寫的,多單詞用下劃線分隔,而且是複數形式。對應的類名是單詞首字母大寫來進行分隔的,而且是單數形式。表中的字段直接對映成類的屬性,除此之外,我們還可以給類再另外新增一些屬性。表名和類名是通過命名慣例去自動對應的,(rails對ruby的字串類進行了擴充套件,讓它直接支援單複數之間的轉變,例如 puts "cat".pluralize    #=>cats         puts "cats".singularize #=>cat),僅管pluralize和singularize方法已經很智慧型了,能處理child和children這樣的單複數轉換,但它仍然還是有缺陷,例如sheep會對應到sheeps。我們可以在模型類中,cefpset_table_name去顯示地指明對應的表,而不使用預設的慣例。

class sheep < activerecord::base

set_table_name "sheep"

end7)activerecord從表中取出值,變成類的物件時,會自動將資料庫中的型別轉換成ruby支援型別,例如資料庫欄位是timestamp型別的,就會返回time物件。如果你希望得到乙個屬性的原始值,可以在屬性名稱後面加上_before_type_cast。

account.balance_before_type_cast

如果在模型內部,可以使用私有方法read_attribute()和write_attribute()。

8)布林型的資料在轉換的時候會有些麻煩,有些資料庫是不支援布林型的,所以我們在工作中,可以使用0,1這樣的數字來代表布林值的真假,而ruby中只有false和nil為假,0其實是為真的。所以在資料庫對映到類時,我們要判斷某個屬性的真假時,記得要加乙個?號,這個是rails為解決布林型問題而設定的。

# 錯誤寫法

if user.superuser

dosomething

end# 正確寫法

if user.superuser?

dosomething

end9) 在程式設計時,可以某個屬性對應的是乙個物件,而不是乙個簡單型別的資料。在類和表的對映的時候,這種複雜型別的屬性也是可以直接儲存到表中的乙個欄位的,這個字段必須是text型別的,屬性會以字串的形式存進資料據。而從資料庫中對映到類時,需要在類中加以宣告,某個欄位是個物件,不是普通字串。宣告的方法是serialize()。複雜型別包括物件,陣列,hash等等。

class purchase < activerecord::base

serialize :last_five

end10)主鍵。一般來說,rails都會用id作為每張表的主鍵,但表並不是由我們自己來建的,可能表會用別的字段作為主鍵。我們可以用set_primary_key來顯示地指定主鍵字段。

class badbook < activerecord::base

set_primary_key "isbn"

end但需要注意的是,既然指定主鍵為其它字段,但在訪問時,仍然可以通過名為id的屬性來設定主鍵值,也就是說,只要使用activerecord,主鍵欄位在物件中的屬性名稱就永遠都是id。

課堂亂記1

在曉巨集爺爺的課上自習 帶點蹭課性質 隨便聽了一些亂七八糟的東西,然後亂記下來 機器字長 64位,32位,16位機 計算機alu 算術邏輯單元,cpu裡面用於運算的單元,a 算術運算 l 邏輯計算 一次能處理的位元組數。暫存器 儲存資料的單元。現在計算機由軟體,硬體,韌體 固化的軟體,介於軟硬體之間...

sql server 初學亂記

1.建立資料庫 連線進伺服器,右鍵單擊資料庫資料夾,直接新建資料庫,2.建立 右鍵單擊資料庫表資料夾,手動配置相關資料。3.資料操作 查資料select from table test 增insert into table test values 1,2,aini 改update table tes...

數數結論亂記(長期

x sum beginn k endx k x n sum beginn k end 1 x x n sum beginn k endx x sum beginn k end 1 x k 可以編口訣背 對於乙個集合 n,定義函式 f 2n r,以及函式 f 的 zeta變換 f f zeta s s...