2012-03-10 56 views
39

我有來自不同國家的用戶,並希望對它們執行的發現Rails的:找到所有與我的應用程序的條件

我試圖做這樣的指標作用

@fromcanada = User.find(:all, :country => 'canada') 

,但我得到了錯誤

Unknown key: country 

但是,這讓我問,什麼可以成爲一個關鍵?在我的數據庫模式文件中,我在用戶表上有一個「國家」列。

t.string "country" 

而且,當我做了找到所有

@users = User.all 

我能做到這一點

<%= user.country %></p> 

你能解釋爲什麼我發現所有的條件沒有工作?並告訴我應該怎麼做?

+1

您使用的是哪個版本的Rails? – James 2012-03-10 21:28:51

+3

'@fromcanada = User.where(:country =>'canada')。all'可能是更好的風格。 – 2012-03-10 21:31:02

+0

@ muistooshort爲什麼需要調用'all'?當你調用'User.all'時,你得到了所有的用戶,但是當你用'where'過濾用戶時,我沒有意義(對於新手問題) – 2012-03-10 21:40:18

回答

67

試試這個。

@fromcanada = User.find(:all, :conditions => { :country => 'canada' }) 

編輯: 作爲jason328指出,上述回答是棄用3.2,以及更新的答案是

@fromcanada = User.where(:country => 'canada') 
30

如果沒有人閱讀註釋。一個更好的格式將是

@fromcanada = User.where(country: 'canada').all 

上一個答案的代碼在3.2中被棄用。

對於那些使用Rails 4的人來說,刪除all方法就足夠了。請注意,to_a將查詢調用爲數組格式。

+3

這種關係#的使用已被棄用在rails 4中。如果你想爲了加載,只需用'load'替換'all'。否則,你甚至不需要「全部」。你的回答沒有錯。我只是期待4號鐵軌。 – courtsimas 2013-04-16 21:35:52

相關問題