Before going for details.
Question 1:-- What\'s the meaning of scope here (ie named **scope)?**
what\'s the benefits of using named
The named_scope are really useful for 2 cases
better readabililty
With good named_scope you can understand more easily what you want really search.
Chaining
All named_scope can be chained. So if you want made a search system, it's easy to do. Made it before it was painful.
You can generate chain it on the fly.
Scope simply means some selected range. So if you use:
orders = Orders.checks.last_n_days(7)
then you want to select from orders only that orders that are payed with check and are within last 7 days. So you 'scope' orders.
Why not using methods?
Named scopes are methods. It is just a simpler way of definig them so you don't have to care about all details and you can be happy using it!
And remember that scopes are just adding some conditions (and other stuff) to sql query.
we get shorter, chainable, and more readable code:
orders = Orders.checks.last_n_days(7)
is much more readable, shorter and not chainable than
orders = Orders.all :conditions => ["updated < ? and pay_type='check'", 7]
In Rails3 the advantage will be even greater, because of arel. For more information I recommend watching the Railscasts: