User.delete_at を使用して、アプリでユーザーの論理的な削除を有効にするために取り組んでいます。そのフィールドが設定されている場合、削除されたユーザーがアプリ全体に返されることは望ましくありません。したがって、次のモデルがある場合、次のようにセットアップします。
User.rb
has_many :groups, :through => :group_members, :conditions => ['banned = ?', false]
default_scope :conditions => 'users.deleted_at IS NULL'
Group.rb
belongs_to :user
has_many :group_members, :dependent => :destroy, :include => :user, :conditions => ['banned = ?', false]
GroupMember.rb
belongs_to :group
belongs_to :user
default_scope joins(:user).where('users.deleted_at IS NULL')
次に問題は、私が実行したときです:
current_user.groups
次のエラーが表示されます。
Group Load (0.5ms) SELECT "groups".* FROM "groups" INNER JOIN "group_members" ON "groups"."id" = "group_members"."group_id" WHERE "group_members"."user_id" = 1 AND (users.deleted_at IS NULL) AND (banned = 'f')
PG::Error: ERROR: missing FROM-clause entry for table "users"
LINE 1: ..."group_id" WHERE "group_members"."user_id" = 1 AND (users.dele...
User.delete_at ユーザーがアプリ全体で返されないようにするためのより良い方法はありますか? ありがとう