Open
Description
Just a question: when should we prefer to use rails scope and where class methods?
These are almost similar things ( one different. That if the lambda (or logic) returns nil, scope returns the current value in this, class method returns nil) See https://www.justinweiss.com/articles/should-you-use-scopes-or-class-methods/
Usually, I use the rule. I prefer to use scope
for subqueries, but move it to class methods if it needs to use do end
block
# ok
def self.active
where(finished: false)
end
# better
scope :active, -> { where(finished: false) }
# bad
scope :active, -> do
where(finished: false)
.joins(:statuses)
end
# good
def self.active
where(finished: false)
.joins(:statuses)
end
Your thoughts?