3
這是來自rails noob嘗試理解問題和範圍的問題。範圍是否在rails類或實例方法中?
我一直以爲範圍是在軌道類的方法,但隨後有一天,我看到了this code from 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
這裏是一篇文章的集合,所以我們正在對實例進行操作,而可見方法似乎被用作類方法。不是大衛試圖將一個類方法作爲一個動態範圍來調用嗎?有人可以澄清嗎?
所以作用域實際上作用於activerecord對象,也可以作爲消息發送給一個類。那是對的嗎? –
我真的不明白這個問題......你能澄清一下嗎? –
我可以使用範圍作爲整體對記錄以及模型類進行操作? –