Rails, ou pourquoi faire compliqué quand on peut faire simple ?
Je découvre avec émerveillement l’attribut :include d’ActiveRecord::Base, qui efface de mon esprit des années de cauchemars SQL.
Jugez plutôt, quand une horreur pareille
self.find_by_sql([%{
SELECT categories.id, categories.name, categories.permalink, categories.position,
COUNT(articles.id) AS article_counter
FROM #{Category.table_name} categories
LEFT OUTER JOIN #{Category.table_name_prefix}categorizations#{Category.table_name_suffix} articles_categories
ON articles_categories.category_id = categories.id
LEFT OUTER JOIN #{Article.table_name} articles
ON (articles_categories.article_id = articles.id AND articles.published = ?)
GROUP BY categories.id, categories.name, categories.position, categories.permalink
ORDER BY position
}, true]).each {|item| item.article_counter = item.article_counter.to_i }devient tout simplement :
self.find(
:all,
:include => :articles,
:conditions => ['contents.published = ?', true],
:order => 'position').each { |cat| cat.update_attributes(:article_counter => cat.articles.length) }C’est beau, pour un peu j’en pleurerais.

1 commentaire sur Rails, ou pourquoi faire compliqué quand on peut faire simple ? »
Réagir à Rails, ou pourquoi faire compliqué quand on peut faire simple ?
Trackbacks sur Rails, ou pourquoi faire compliqué quand on peut faire simple ?
Les trackbacks sont fermés pour cause de spam.
