2010-06-06 3 views
1

Il existe deux modèles Post et Comment. Je devrais obtenir tous les messages, qui n'ont aucun commentaire avec une étiquette spécifique. Comment puis-je faire cela en utilisant les nouvelles fonctionnalités de Rails 3 telles que l'algèbre relationnelle (arel).Rails3: comment utiliser l'algèbre relationnelle pour remplacer les constructions SQL comme NOT et OUTER JOIN

SQL solution doit être quelque chose comme ceci:

SELECT  `posts`.* FROM  `posts` LEFT OUTER JOIN `comments` ON `posts`.`id` = `comments`.`post_id` 
WHERE NOT (`comments`.`tag` = 'my_tag') 
+0

soutient-il devenir? Je ne peux pas le voir n'importe où sur votre lien. –

+0

Arel: http://github.com/nkallen/arel New Rails Active Record caractéristiques: http://guides.rails.info/active_record_querying.html Il est rails communs 3 interface de querty ... – petRUShka

Répondre

1

Ajouter à votre Gemfile:

gem 'meta_where' 

puis:

Post.includes(:comment).where(:comments => {:tag.not_eq => 'my_tag'}) 
+0

Non, il revient Int. – Oleander