Rails单表继承/子类在父级中查找条件

时间:2010-03-29 14:02:40

标签: ruby-on-rails subclass single-table-inheritance

我有一个名为Users(class User < ActiveRecord::Base)的表,以及客户端(class Client < User)的子类/ STI。

客户端“过滤”按预期工作,换句话说,Client.find(:all)可以查找所有客户端。

但是,对于用户,我需要过滤结果以仅查找非客户端的用户(其中​​type为null或空白)。

我在索引控制器中尝试了以下内容,但无论我为该类型添加什么,它都会返回所有用户,无论其类型如何。

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

有关如何使这种情况发挥作用的任何线索?

谢谢!

2 个答案:

答案 0 :(得分:1)

我不知道属性'type'是如何填充的。但是,如果type是数据库列,您将能够通过适当的SQL表达式对其进行过滤:

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

或者你的意思是“阶级”这个功能?据我所知,“type”已被弃用。 IRB声明:警告:不推荐使用Object#type;使用Object#class

答案 1 :(得分:0)

好的,想通了!

应用程序使用lib作为默认控制器方法(类似于resource_controller),我错误地覆盖了用户控制器中的索引方法。

感谢Achim的帮助!!