002 動態find by方法

2021-08-29 13:06:35 字數 1199 閱讀 5378

@tasks = task.find(:all, :conditions => [ 'complete = ?', false ])

@task = task.find(:first, :conditions => [ 'complete = ?', false ], :order => 'created_at desc')

以動態的find_by和find_all_by方法縮短查詢語句,以下**等效。

@tasks = task.find_all_by_complete(false)

@task = task.find_by_complete(false, :order => 'created_at desc')

另外1.對於:conditons後面有2個引數的情況,下面的**等效。

task.find(:all, :conditions => [ 'complete = ? and category_id = ?', false, 1 ])

task.find_all_by_complete_and_category_id(false, 1)

2.動態查詢支援nil, array以及range作為引數。看源**有下面一段:

def attribute_condition(argument)   

case argument

when nil then "is ?"

when array then "in (?)"

when range then "between ? and ?"

else "= ?"

end

end

於是,如果想要查詢上海或者北京,18到30歲的使用者,可以這麼寫

user.find_all_by_city_and_age([ 'shanghai', 'beijing' ], 18..30)

3.動態查詢仍然可以使用:conditions引數,額外的條件會使用with_scope來約束。

book.find_by_title('title', :conditions => ['price > ?', price])

SHELL 002 ps命令常用方法

1.檢視服務程序號 檢視服務是否正常執行 ps ef grep 服務名 grep v grep eg root lnp ps ef grep php fpm grep v grep nginx 1682 1681 0 17 16 00 00 00 php fpm pool www nginx 168...

動態規劃題解 D002 合唱團

有 n 個學生站成一排,每個學生有乙個能力值,牛牛想從這 n 個學生中按照順序選取 k 名學生,要求相鄰兩個學生的位置編號的差不超過 d,使得這 k 個學生的能力值的乘積最大,你能返回最大的乘積嗎?每個輸入包含 1 個測試用例。每個測試資料的第一行包含乙個整數 n 1 n 50 表示學生的個數,接下...

003 設計模式 002 工廠方法模式

工廠方法模式有3種 普通工廠模式 對實現同一介面的類進行例項的建立 工廠類提供乙個建立物件的方法 建立物件的方法有乙個入參,引數不同,建立的物件不同 多方法工廠模式 對實現同一介面的類進行例項的建立 工廠類提供多個普通 非靜態 建立物件的方法 每個方法建立的物件不同 靜態工廠模式 對實現同一介面的類...