2010-03-29 100 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