Eh bien, je ne sais pas si je me trompe complètement, mais je ne peux vraiment pas trouver une façon très pratique et directe de faire quelque chose comme:rails modèle: has_many avec des arguments de soi (PAS d'association)
class User < ActiveRecord::Base
has_many :creations
end
mais la chose est, je veux juste que l'utilisateur ait beaucoup de créations si le user.developer == true où user.developer est juste un champ booléen dans la table des utilisateurs.
Donc, des idées sur comment exactement pourrais-je le faire directement à partir du modèle?
Reprise, lorsque l'utilisateur est pas un développeur si vous essayez d'obtenir User.first.creations, User.first.creations.new ... créer ... détruire, etc vous obtenez un NoMethodError mais si c'est un développeur vous pouvez créer une nouvelle création.
La seule façon que je réussi à le faire est l'extension du modèle et de la vérification d'extension si le proxy_owner.developer == true mais en faisant cela je devais réécrire toutes les actions telles nouvelles, créer, mettre à jour, etc. ...
Toute aide serait très apprécié Merci beaucoup
C'est vraiment le moyen de le faire. Exemple classique d'un comportement qui devrait être modélisé en héritage. Vous aurez besoin d'avoir une lecture rapide sur les rails STI pour voir comment le configurer, c'est vraiment très facile. Ensuite, vous pouvez aussi faire des choses comme Developer.find_blah. – dalyons
Merci pour ces copains, en fait je l'ai fait avant de venir avec l'idée «excellente» d'utiliser moins de modèles sur mon application. Je pensais que ce n'est pas nécessaire d'avoir un nouveau modèle pour cela puisque c'est une chose très simple, alors j'ai commencé à changer mon. Mais comme je le vois probablement, je vais devoir revenir à cette idée. Mais une chose à coup sûr qui est vraiment intrigante est le fait qu'il n'y a pas de "moyen facile" de dire: "ok, je veux juste que ce modèle ait beaucoup: blas si ce modèle a cet atrribute", en plus de créer un nouveau modèle. – zanona
J'ai essayé ceci (http://pastebin.com/f3eb450a3) Et cela a fonctionné sur le premier appel mais après qu'il ait créé le has_many: apps pour la première fois il l'attache à la classe ainsi aucune manière que vous pouvez surcharger plus. Mais, merci pour votre aide, il est vraiment apprécié – zanona