Je connais pas Inherited_resources mais en overridant la méthode "collection" dans ton contrôleur tu ne peux pas lui fournir exactement ce que tu veux comme collection (à la place d'utiliser les méthodes begin/end_of_assocation_chain) ?
2011/7/27 Ralphb <[email protected]>: > > Bonjour, > Dans le cadre d'une manipulation pour démonstration sur de la "reprise > d'un code", j'ai eu besoin de créer un scope qui ne fait rien (scope > idempotent). Cela fonctionne mais ne trouvant rien dans la > documentation je me demande si cela est prévu ou risqué et donc votre > avis là dessus. Nous avons de plus discuté d’autres usages de cette > technique (par exemple commencer le code en décrivant les requêtes > avec des scopes avant d’avoir toutes les informations sur la BDD dans > le cas d'une refonte, d'un dev incrémental ou d'un client qui ne peut > tout fournir à l'heure). > > Si besoin je joins un exemple de la démonstration, mais la question > n’est pas liée à l’exemple (que je ferais différemment si j’avais à le > faire « en vrai »), seulement à l'utilisation d'un scope "vide" > > Exemple : > J'ai un objet Company, dans un contrôleur utilisant > InheritedRessource. La gestion des droits d'accès à l'objet Company > est fait dans cet objet pour des raisons historiques (et si on décide > de refaire cela proprement l’exemple n’a plus de sens…), plus > clairement on a : > class Company < ActiveRecord::Base > scope :accessible_by_user, lambda { |user| > <... construit un scope renvoyant toutes les companies > accessible par cet utilisateur à ce jour> > } > ... > end > Le problème c’est que InheritedRessource, lorsqu’on lui spécifie une « > begin_of_association_chain » ajoute de lui même le nom de la > collection après. Par exemple dans ce cas en définissant > > def begin_of_association_chain > Company.accessible_by_user(@current_user) > end > > InheritedRessource recherchera : > Company.accessible_by_user(@current_user).companies > et companies n’est pas défini pour l’objet ActiveRecord::Relation > renvoyé. > > D'ou l'utilisation d'un scope vide : > scope :companies > Ce qui fonctionne. > > Note : En temps normal j’aurais simplement résolu le pb ainsi : > class User < ActiveRecord::Base > def companies > Company. accessible_by_user(self) > end > end > > def begin_of_association_chain > @current_user > end > > Dans le controlleur, mais l'objet user a déjà une relation companies > définie sur l'objet Company qui ne correspond pas à ses droits d'accès > à cet objet. Et... La question est sur le scope vide ! > > Merci. > > Raphaël. > > -- > Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de > Google Groups. > Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse > [email protected] > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] -- Nicolas Blanco, Web developper http://www.nicolasblanco.fr Jabber/GoogleTalk : [email protected] Twitter : http://twitter.com/slainer68 Github : http://github.com/slainer68 Skype : slainer68 -- Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse [email protected] Pour résilier votre abonnement envoyez un e-mail à l'adresse [email protected]
