Je suis nouveau sur les rails et je m'excuse si c'est une question n00b.has_many accepte_nested_attributes_for la question d'association
Je crée le site de gestion de recette obligatoire et je souhaite que chaque recette ait une liste de balises (où la balise db contient juste une chaîne appelée "nom"). Voici mes modèles pour vous donner un peu de contexte:
class Recipe < ActiveRecord::Base
has_many :links
has_many :tags, :through => :links
validates :name, :ingredients, :directions, :presence => true
accepts_nested_attributes_for :tags,
:allow_destroy => true,
:reject_if => :reject_tag
def reject_tag(a)
...
end
end
class Tag < ActiveRecord::Base
has_many :links
has_many :recipes, :through => :links
end
class Link < ActiveRecord::Base
belongs_to :recipe
belongs_to :tag
end
Fondamentalement, chaque recette a une liste de balises à travers la table de connecteur de liaison et vice versa. Le formulaire de recette accepte les attributs imbriqués pour les balises. Le comportement que je souhaite est que les balises dupliquées ne soient pas entrées dans la table des balises, mais qu'un nouveau lien pointant vers la balise existante soit créé. Donc, si j'ai une étiquette avec le nom «sain» et entrez une nouvelle recette et ajoutez l'étiquette «saine» à elle je ne veux pas que les étiquettes «saines» en double dans la table d'étiquette. Tout ce qui est nécessaire est une nouvelle entrée dans la table de lien reliant la nouvelle recette à l'ancienne étiquette.
Quelle est l'approche «rails» pour ce faire. En ce moment j'essaie de le pirater en passant le recipe_id dans un champ de saisie caché dans: reject_if lambda et enregistrez un nouveau lien là. Cela fonctionne pour éditer une recette existante, mais pas pour en créer une nouvelle, puisqu'il n'y a pas encore de recette. Id. Cela ressemble à une mauvaise approche et je ne suis pas sûr de savoir comment s'y prendre. Toute aide est appréciée.
Merci beaucoup, c'est exactement ce que je cherchais! – danh32