これは、懸念事項と範囲を理解しようとしているRailsnoobからの質問です。
スコープはRailsのクラスメソッドだといつも思っていましたが、先日、DHHからこのコードを見ました。
module Visible
extend ActiveSupport::Concern`
module ClassMethods
def visible_to(person)
where \
"(#{table_name}.bucket_id IN (?) AND
#{table_name}.bucket_type = 'Project') OR
(#{table_name}.bucket_id IN (?) AND
#{table_name}.bucket_type = 'Calendar')",
person.projects.pluck('projects.id'),
calendar_scope.pluck('calendars.id')
end
end
end
したがって、このメソッドのvisible
使用方法は次のようになります。
current_account.posts.visible_to(current_user)
これが私を混乱させているものです。Self
これは投稿のコレクションであるため、インスタンスを操作していますが、visibleメソッドはクラスメソッドとして使用されることを意図しているようです。davidはクラスメソッドを動的スコープとして呼び出そうとしていませんか?誰かが明確にしてくれませんか?