2011-07-10 2 views
0

automaticly [question de mise à jour pour clarifier]Faire ActiveRecord SQL append une

Puis-je créer un modèle dans Rails 3/3.1 et faire ActiveRecord utiliser automatiquement/append certains je rejoint à ce modèle configuré?

Ex:

Utilisez le code comme ceci:

class Component < ActiveRecord::Base 
    def self.base_query 
     joins("join t05 on d04.t05_ukey = t05.ukey left join d03 on d04.d03_ukey = d03.ukey left join d16 on d04.d16_ukey = d16.ukey") 
    end 
    end 

    Component.first  # under the hood is doing Component.base_query.first 
    Component.where(...) # under the hood is doing Component.base_query.where 

Mais ActiveRecord appelle la méthode base_query sous le capot sans qu'il soit nécessaire d'appeler explicitement. Juste pour le rendre plus Rails-like.

Des idées?

Répondre

0

Jetez un coup d'œil à ce guide sur l'interrogation d'enregistrements actifs avec Arel. Il y a aussi quelques très bonnes transmissions sur le sujet (@ railscasts.com). Et si vous vous trouvez avec des clauses de laid, etc, jetez un coup d'oeil à la gem meta_where. Je jure par ces trois choses.

+0

Trouvé que je peux créer une méthode (ex: basic_query) et inclut toutes ces jointures (...) mais je dois appeler "Component.basic_query" chaque fois que je dois interroger un composant. Je veux qu'ActiveRecord ajoute toutes ces jointures (à partir de la requête sql que j'ai montrée) chaque fois que j'utilise le modèle Component, même si j'appelle Component.find (1). –

Questions connexes