Rails Best Practices
Observer serves as a connection point between models and some other subsystem whose functionality is used by some of other classes, such as email notification. It is loose coupling in contract with model callback.implemented
If a model has some related columns, e.g. a user has an address_city and an address_street, you can extract these properties into a composed class.
Some codes in your model are related, they are take charge of the same things, such as logging and authorization. We can extract these codes into a module to reuse them.
If you find some methods whose definitions are similar, only different by the method name, it may use meta programming to simplify the things.
According to the law of demeter, a model should only talk to its immediate association, don't talk to the association's association and association's property, it is a case of loose coupling.implemented
named_scope is awesome, it makes your codes much more readable, you can also combine named_scope finders to do complex finders.
According to the decoupling principle, model should do finders by itself, a model should not know too much about associations finders logic.implemented
If you use RESTful design, you should NOT use default route. It will cause a security problem. I explain at http://ihower.tw/blog/archives/3265 too.implemented
Some people will define 3 or more level nested routes, it's a kind of over design and not recommended.implemented