2010-03-29 98 views
3

我有一個名爲Users(class User < ActiveRecord::Base)的表和一個用於Clients(class Client < User)的子類/ STI。Rails單表繼承/父類中的子類查找條件

客戶端「過濾」按預期工作,換句話說Client.find(:all)用於查找所有客戶端。

但是,對於用戶,我需要篩選結果以僅查找非客戶端的用戶(其中​​類型爲空或空白)。

我已經在我的索引控制器中嘗試了以下內容,但無論我爲該類型放置了什麼,它都會返回所有用戶,而不管類型如何。

User.find(:all, :conditions => { :type => nil }, :order => 'name') 

關於如何讓這個條件起作用的任何線索?

謝謝!

回答

0

好的,想通了!

該應用程序使用缺省控制器方法(類似於resource_controller)的庫,我錯誤地覆蓋用戶控制器中的索引方法。

感謝您的幫助Achim!

1

我不知道'type'屬性是如何填充的。但是,如果類型是數據庫列,你就可以通過適當的SQL表達式過濾它:

User.find(:all, :conditions => [ " type=null or type='' "]) 

還是你的意思功能「下課」?據我所知,「type」已被棄用。 IRB狀態:警告:對象#類型已棄用;使用對象#類

+0

試過,但仍然沒有過濾類型的原因。這讓我瘋狂。 – slythic 2010-03-29 16:40:45