簡體   English   中英

Ruby on Rails3 和 MySQL 查詢最佳實踐

[英]Ruby on Rails3 and MySQL query best practices

我正在嘗試從 PHP 過渡到 Rails,並且想知道最佳實踐是什么。 我在 MySQL 中擁有我需要的所有數據,並希望使用 ActiveRecords 提供的各種細節進行簡單查詢並顯示它們。 我熟悉 MVC 范式,並且試圖不依賴我對 PHP 的了解,但是,例如,我將如何能夠做我曾經做過的事情:

$query = mysql_query("Select * from table where name = 'blah');

如果我已經擁有該數據(如果我沒有預先存在的數據,我可以看到生成腳手架)。 我是否要創建一個腳手架,然后將我的數據導入其中? 還是我在 Ruby 中編寫原始 MySQL 查詢?

謝謝!

首先,記住 Rails 是一個 web 開發框架,而不是像 PHP 這樣的腳本語言。 Ruby 是腳本語言。 PHP 也有框架,但只是想確保您意識到兩者之間的區別。

Rails 中的大多數基本和中等復雜度查詢都是通過 ActiveRecord 方法和幫助程序處理的。 你會發現你寫的實際 SQL 會少得多,因為它通常被抽象到框架中。

例如,假設您的 model 的名稱是 City,那么您在 Rails 中的查詢相當於:

City.find_all_by_name('blah')

這是如何運作的? 當你在 Rails 中創建 model 時,你通常繼承 ActiveRecord::Base。 內置在 class 中的是大量的功能,一方面,檢查您的數據表並為表上的每個字段和字段組合構建動態查找器。

由於您已經擁有所有數據,因此您將覆蓋 Rails 的一些常規功能以使一切正常運行。 例如,Rails 按照慣例假定有一個名為“id”的主鍵字段。 此外,Rails 假設該表被命名為 model class 定義的復數形式。 所有這些東西都是約定俗成的,但可以被覆蓋。 如果您是從頭開始構建並遵循約定,那么所有這些都會理所當然地發生。

根據您的問題,我認為您需要花一些時間閱讀一些基本的 Rails 閱讀材料和一些關於 ActiveRecord 和 Rails 模型的具體信息,以便您了解 Rails 和標准 PHP 應用程序之間的這些主要差異。 如果您從一開始就沒有明白這一點,那么您將構建大量 PHP 風格的 Rails 東西,您將無法充分利用 Rails 和 Ruby 所提供的功能。 最后,你會說“我做這一切是為了什么,都是一樣的”。

相反,如果您嘗試從 Rails 的處事方式開始,您會發現 Ruby 和 Rails 提供了很多。

如果您正在使用現有數據庫,那么您將很難強迫 Rails 很好地使用它。 Rails 的力量(有些人可能稱之為弱點)在於它更傾向於約定而不是配置。 換句話說,它確實希望您的數據庫列以某種方式構造。 偏離慣例,你一開始就失去了使用 Rails 的所有理由。

當您開始一個新的 Rails 項目並使用遷移 rails 時,請確保結構符合預期。

如果您要將舊項目移動到 Rails,那么我強烈建議您編寫 function 以將該數據導入到 rails 創建的數據庫中。 從長遠來看,這將為您省去很多心痛,並讓您充分利用 Rails 的優勢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM