Rails 3:在连接语句中使用范围

时间:2012-10-20 00:42:42

标签: ruby-on-rails-3 join scope

我正在使用一些旧的代码,其中不能选择重大的重构。以下代码行:

Address.joins(:contact => :user).where('users.organization_id = ?', session[:org_id])

生成一个地址列表。地址链接到Contacts表,而Contacts表又链接到Users表。

我需要一种方法来加入某个范围内的某些用户,例如User.active或User.inactive。

如果我的数据库没有重要的重构,有没有办法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

假设您有一个布尔属性,表示用户表中的用户是否处于活动状态...那么您不需要对数据库执行任何操作...您可以在用户模型中定义范围以运行

下面的一行

User.active.joins(:address =>:contacts).where('users.organization_id =?',session [:blah-blah]')

如果您的数据库中没有该布尔属性,那么您必须设计一种可以处理各种属性的特定机制,以确定用户是否处于活动状态...