1

我正在处理一些无法进行重大重构的旧代码。以下代码行:

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

生成地址列表。地址链接到联系人表,而联系人表又链接到用户表。

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

有没有一种方法可以在不对数据库进行重大重构的情况下做到这一点?

4

1 回答 1

1

假设您有一个布尔属性,它说明用户是否在您的用户表中处于活动状态......那么您不需要对数据库做任何事情......您在 User 模型中定义一个范围来运行下面的行

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

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

于 2012-10-20T05:49:39.710 回答