1

主要なリファクタリングがオプションではない古いコードを使用しています。次のコード行:

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

アドレスのリストを生成します。アドレスは連絡先テーブルにリンクされ、さ​​らに連絡先テーブルはユーザー テーブルにリンクされます。

User.active または User.inactive など、特定のスコープ内の特定のユーザーにのみ参加する方法が必要です。

データベースを大幅にリファクタリングせずにこれを行う方法はありますか?

4

1 に答える 1

1

ユーザーがユーザーテーブルでアクティブかどうかを示すブール属性があると仮定すると...データベースに対して何もする必要はありません...ユーザーモデルでスコープを定義して、以下の行を実行します

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

データベースにそのブール属性がない場合は、さまざまな属性で機能する特定のメカニズムを考案して、ユーザーがアクティブかどうかを判断する必要があります...

于 2012-10-20T05:49:39.710 に答える