PP Junty wrote: > hello. i just checked Chad Fowler's post "20 Rails Development No-No's" > and > one guideline caught my attention. it says: > > "Nothing that looks at all like SQL should go into a controller, view, > or helper."
Things that "look like" SQL include any kind of query more elaborate than a simple accessor call. For example: - hit a service that provides realtime currency exchange rates - hit a service that provides the local weather report - retweet some popular tweets - calculate the integral of a Zipfs Law partition over a population - calculate 40 + 2 - rip a list of items, then .select and .reject its candidates - parse some XML with XPath and find a data point > it really came as a surprise to me as Rails itself seems to go against > such practice by its AR 'conditions' option, which most of the times > contains > SQL code. like in this example from Rails Cookbook: Then don't put it in the controller or view - even if the Book does. There's a super-easy metric to see if you are obeying this rule: How easily can you test your SQL-like statement? If your test must call a controller with get :action, you are farther from your statement than you should. (But note such a test might call an action and detect that it called the correct model method, so long as such a test case is completely auxiliary to your actual method and its real test!) Similarly, you should not call a view, render a page, rip its details out of HTML (even with assert_xhtml!), and then test that your SQL-like statement worked. Put another way, the Law of Demeter should apply more strictly in the controllers and views! -- Phlip http://flea.sourceforge.net/resume.html --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---