How do you scope ActiveRecord associations in Rails 3?

后端 未结 6 1690
你的背包
你的背包 2021-01-30 01:21

I have a Rails 3 project. With Rails 3 came Arel and the ability to reuse one scope to build another. I am wondering if there is a way to use scopes when defining a relationsh

6条回答
  •  爱一瞬间的悲伤
    2021-01-30 02:13

    I suggest you take a look at "Named scopes are dead"

    The author explains there how powerful Arel is :)

    I hope it'll help.

    EDIT #1 March 2014

    As some comments state, the difference is now a matter of personal taste.

    However, I still personally recommend to avoid exposing Arel's scope to an upper layer (being a controller or anything else that access the models directly), and doing so would require:

    1. Create a scope, and expose it thru a method in your model. That method would be the one you expose to the controller;
    2. If you never expose your models to your controllers (so you have some kind of service layer on top of them), then you're fine. The anti-corruption layer is your service and it can access your model's scope without worrying too much about how scopes are implemented.

提交回复
热议问题