Bonjour,

J'essaie actuellement d'apprendre ruby + ruby on rails et je bloque sur un problème sûrement très simple pour les habitués ^^, j'essaie de faire une condition sur une requête.

#articles_controller
    def category
       @articles = Article.find( :all, :conditions => {:category=>{ :slug => 'non-classe'}} )
         render 'index'
    end

(pour le système de slug j'utilise https://github.com/norman/friendly_id )

Du coup c'est ma request "Article.find" qui pose soucis, je ne sais pas comment faire pour faire un where sur la relation Category.slug.

ça doit être vraimnt tout bête mais je bloque là dans mon apprentissage ^^

Merci d'avance.

4 réponses


Salut,

Si tu utilises la version de rails 4 et plus tu peux essayer:

@articles = Article.include(:category).where(category.slug: 'non-classe')

C'est normal qui tu as ":category=>" dans ta requête ?

Tu ne devrais pas plutôt avoir ceci :

#articles_controller
    def category
       @articles = Article.find( :all, :conditions => {:category => { :slug => 'non-classe'}} )
         render 'index'
    end

et pourquoi tu ne fait pas ça :

def category
       @articles = Article.categories.where(slug: 'non-classe')
         render 'index'
    end

En 9 mois je pense qu'il a résolu son problème xD