Composing scopes is completely normal - they are clear, easy to test and
can serve as building blocks. What you need to keep in mind is to keep your
code DRY.

For example, if you have an e-commerce site selling guitars and from the
data you see that high-end left-handed guitars are most often bough by male
left-handed adults then you don't want to litter the code with multiple
occurrences of `Person.male.adult.left_handed`. This is an implementation
detail. You should define a scope (or a class method)
`Person.best_high_end_left_handed_buyers` and define it to equal
`Person.male.adult.left_handed`. If requirements change at a later point in
time you can just change the definition. (Alternatively you can define a
private method that returns the scope in your controller).

TL;DR: It's normal to chain scopes but keep your code DRY and make your
code express your intent.
-- 
Greg Navis
I help tech companies to scale Heroku-hosted Rails apps.
Free, biweekly scalability newsletter for SaaS CEOs
<http://www.gregnavis.com/newsletter/>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/CAA6WWt_pkNbeXA0AV7Otu4SHNUY%3Db6-equpbM%2BkBwh8q2eC62w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to