8
votes

Comment commander par un modèle associé en portée par défaut? - rails 3.1

Comment puis-je écrire la portée par défaut suivante: xxx

essentiellement je veux trier par un marchand.is_paid champ (qui appartient à un modèle associé)

tout conseil?


0 commentaires

3 Réponses :


6
votes

Voici ce que vous pouviez faire pour avoir des fonctionnalités requises, mais ce n'est pas une bonne idée de le faire, s'il vous plaît lire jusqu'à la fin

Vous pouvez définir votre portée par défaut pour inclure également l'association de marchands, puis commandez par marchands.is_paid Desc, score Desc

regarderait quelque chose comme xxx

Cependant, cela signifie que chaque fois que vous attrapez des objets marchands similaires pour une raison quelconque vous aurez Association chargée aussi bien

Ce n'est pas génial et je suggérerais d'avoir une étendue explicite pour charger des marchands similaires avec association et commander: xxx

Vous savez toujours dans votre code ce qui est chargé exactement de la base de données


0 commentaires

14
votes

Essayez ceci: xxx

et veuillez garder à l'esprit que cela peut être lent, en fonction du nombre des enregistrements


3 commentaires

Mais veuillez garder à l'esprit que cela peut être lent, en fonction du nombre des enregistrements


Toute commande par déclaration peut être lente. C'est comme dire que cette voiture peut aller en arrière :-) De toute façon, ça marche bien, merci!


Je reçois 'PG :: Erreur: Erreur: entrée manquante de la clause`



2
votes

Alors, voulez-vous toutes les requêtes de SIMILAREMARMERCANT Modèle à commander par une colonne dans les marchands ? Je doute de votre condition, mais si tel est pour que vous puissiez rejoindre marchands également dans la portée par défaut xxx

Ce sera meilleur si vous définissez cela comme un Portée séparée et appelez cette portée lorsque vous en avez besoin comme ça. En outre, vous devez décider si vous avez besoin de la relation marchand ou similaire_merCant . Si vous voulez similaire_merChant , vous devrez faire jointures (: similaire_merchanant) .

Notez que: le marchand est singulier. C'est-à-dire que vous devez spécifier le nom de la relation spécifié dans le modèle (comme dans appartiens_to: marchand ).


0 commentaires