2012-02-16 51 views
0

我有一個名稱,年齡,性別作爲屬性的模型用戶。用戶可以使用以下標準查詢年齡和性別。如何保存這個查詢。一種方法是將其轉換爲年齡=> age1和age2之間,性別=>'M',並將此查詢保存在帶有用戶標識和查詢字符串以及查詢名稱的表中。 什麼是最好的方式來做到這一點..如果我必須使用這個查詢來找出誰將適合這個角色在未來(說別人會保存一個查詢,我需要找到誰適合我的查詢根據我的年齡和性別..basically我需要能夠以我的年齡和性別匹配到已保存的查詢/選擇標準) 我使用西納特拉爲模型ruby​​ datamapper - 如何保存查詢

感謝

+0

這是你想要做的事情,只爲這種特殊情況或幾個不同的表和領域? – 2012-02-16 17:45:38

+0

我試圖讓模型簡單...但實際上用戶與其他表/模型..因此,查詢可能會非常複雜(基於其他表中的字段,以及不只是年齡和性別) 。 – coool 2012-02-16 17:53:44

回答

0

我喜歡的DataMapper,但有些情況下最好只編寫一些SQL來解決您的問題,然後讓DataMapper爲您完成部分工作。我通常使用DataMapper進行相對簡單的查詢,並在事情變得更復雜時使用舊的SQL。

在你的情況下,SQL命令是這樣的:

SELECT * FROM people 
WHERE (want_age_min IS NULL OR age >= want_age_min) 
AND (want_age max IS NULL OR age <= want_age_max) 
AND (want_sex IS NULL OR want_sex = my_sex) 

你從已經登記系統中的所有的人選擇,並要添加一個標準爲每個相關屬性。結果將是那些不關心最低年齡(want_age_min爲空)或最低年齡小於或等於候選人年齡的人。對於所有屬性也是如此。

這樣,「保存的查詢」就是一行,其中有指定條件的列。那麼你可以使用這個查詢來處理所有情況。

+0

,但你可以建立一個查詢,看看你是否適合在系統中的所有用戶的查詢.. – coool 2012-02-16 18:47:12

+0

嗯......你的意思是像一個約會網站?你填寫一份表格並想要顯示哪些用戶會對你感興趣? – 2012-02-16 20:15:27

+0

是..... .....正好 – coool 2012-02-16 20:56:40