私はrails3_acts_as_paranoid gemを使用しており、has_many:throughアソシエーションを使用してスコープを制御するいくつかの問題を抱えています。rails acts_as_paranoidとhas_many:through
# Folder.rb
acts_as_paranoid
belongs_to :user
has_many :files, :dependent => :destroy
- -
# User.rb
acts_as_paranoid
has_many :folders
has_many :files, :through => :folders
例えば
# File.rb
acts_as_paranoid
belongs_to :files
は今ちょうど私がユーザーに属するすべてのファイルを照会するどこかusers_controller.rbで言うことができます、それらが削除されたかどうか、および/または削除されたフォルダに属しているかどうかを判断します。だから、当然、私は、次のような何かを引き受ける
current_user.files.with_deleted
with_deleted
方法、それが使用されているフォルダのdefault_scopeを削除するdoesntの...files.deleted_at IS NULL
を除去するのに仕事です...しかしんカーテンの裏側の一種。だから私はまだfolders.deleted_at IS NULL
の条件を持っているので、deleted_atがnullでないフォルダに属するファイルを検索できません。
私はacts_as_paranoidを使い続けたいと思っています。私のアプリの他の場所では非常に便利で、手動でのフィルタリングや.where_values
配列の要素のポップアップなどをしないようにしています。しかし、私は複雑なスコープの扱いや利用可能なメソッドについてあまり知らない。
#unscopedメソッドはあなたが探しているものです:http://apidock.com/rails/ActiveRecord/Scoping/Default/ClassMethods/unscoped – pjam
私はスコープのない方法を試しましたが、 automagicはユーザをファイル、特にINNER JOINフォルダ上でBridgingすることに参加します。files.folder_id = folders.id WHERE folders.user_id = 1' – Misterparker
解決策が見つかるかどうかチェックしていますが、 '@user = User.find current_user.id'という行はcurrent_userを再読み込みするときに役に立たないことに注意してください。 – pjam