0

私のユーザー モデルには、削除されたユーザーを表示しないデフォルトのスコープがあります。これにより、アプリでユーザーを論理的に削除できます。問題は、これが関連するモデルでエラーを引き起こしていることです。

User.rb (id,name)
    default_scope :conditions => 'users.deleted_at IS NULL'

NavItem.rb (id,user_id, friend_id)

items = NavItem.find_all_by_user_id(current_user.id)
items.each do |item|
    user = User.find(item.friend_id)
end

ここで私が抱えている問題は、ユーザーが設定されている場合、つまり @user.deleted_at が NOT NULL であるということです。ユーザーが見つからないため、上記のユーザー エラーのクエリです。

NavItem.rb を更新して User モデルに結合し、魔法のように users.deleted_at を除外するにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

以下が役立つかもしれません。

私はこれを足場にしました:

class User < ActiveRecord::Base
  attr_accessible :deleted_at, :name

  default_scope :conditions => 'users.deleted_at IS NULL'

  has_many :nav_items
end


class NavItem < ActiveRecord::Base
  attr_accessible :friend_id, :user_id

  belongs_to :user

  scope :without_deleted_users, where(:user_id => User.scoped)
end

NavItem.without_deleted_users:

NavItem.without_deleted_users
  NavItem Load (0.2ms)  SELECT "nav_items".* FROM "nav_items" WHERE "nav_items"."user_id" IN (SELECT "users"."id" FROM "users" WHERE (users.deleted_at IS NULL))
于 2012-09-26T22:42:58.480 に答える