그래서 rails3_acts_as_paranoid gem을 사용하고 연관을 통해 has_many : scope를 제어하는 데 문제가 있습니다. 예를레일 acts_as_paranoid 및 has_many : through
를 들어# User.rb
acts_as_paranoid
has_many :folders
has_many :files, :through => :folders
-
# Folder.rb
acts_as_paranoid
belongs_to :user
has_many :files, :dependent => :destroy
-
# File.rb
acts_as_paranoid
belongs_to :files
이제 그냥 모든 파일이 사용자에게 속하는 조회 할 users_controller.rb 어딘가에 말할 수, 삭제 여부 및/또는 삭제 된 폴더에 속하는지 여부 그래서 당연히 나는 다음과 같은 일을하는 가정 것
current_user.files.with_deleted
with_deleted
방법 그것이 사용되는 폴더에 대한 default_scope을 제거 나던 ...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 폴더 ON files.folder_id = folders.id WHERE folders.user_id = 1' 지키지 않는 한 그 기능을 유지하지 않는 한? – Misterparker
해결책을 찾았는지 여전히 확인하고 있지만,'@user = User.find current_user.id' 줄은 쓸모가 없습니다. 왜냐하면 current_user를 다시로드하기 때문입니다. – pjam