首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Ruby on Rails 開發實戰(四十八):ActiveRecord 基礎 - 動態查詢

     編輯:Java 相關知識

ActiveRecord 利用 Ruby 動態特性,透過 method_missing 將 find_by_欄位名、find_all_by_欄位名 轉換為條件查詢,免去手寫 SQL。

基本動態查詢

order = Order.find_by_name("Dave Thomas")
orders = Order.find_all_by_name("Dave Thomas")
order = Order.find_all_by_email(params['email'])

等價轉換:

Order.find_by_name("Dave", other_args)
# =>
Order.find(:first, :conditions => ["name = ?", "Dave"], other_args)

Order.find_all_by_name("Dave")
# =>
Order.find(:all, :conditions => ["name = ?", "Dave"])

多欄位組合查詢

user = User.find_by_name_and_password(name, pw)
# =>
User.find(:first, :conditions => ["name = ? and password = ?", name, pw])

方法名以 and 串接欄位名,不支援 or。

注意事項

  • 欄位名若包含 and 可能造成歧義
  • 動態查詢最終仍轉為 find 呼叫,效能相同
  • 複雜條件建議改用 find 明確指定 :conditions
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved