J'ai un modèle de rails qui ressemble à ceci:Comment enregistrer un modèle avec ce champ généré dynamiquement?
class Recipe < ActiveRecord::Base
has_many :ingredients
attr_accessor :ingredients_string
attr_accessible :title, :directions, :ingredients, :ingredients_string
before_save :set_ingredients
def ingredients_string
ingredients.join("\n")
end
private
def set_ingredients
self.ingredients.each { |x| x.destroy }
self.ingredients_string ||= false
if self.ingredients_string
self.ingredients_string.split("\n").each do |x|
ingredient = Ingredient.create(:ingredient_string => x)
self.ingredients << ingredient
end
end
end
end
L'idée est que lorsque je crée l'ingrédient de la page Web, je passe dans le ingredients_string
et laisser le genre de modèle tout ça. Bien sûr, si je suis en train d'éditer un ingrédient, j'ai besoin de recréer cette chaîne. Le bug est fondamentalement ceci: comment est-ce que j'informe la vue de l'ingrédient_string (élégamment) et vérifie toujours si le ingredient_string
est défini dans la méthode set_ingredients
?
Je suis désolé, je ne comprends pas vraiment ce que vous demandez. Quel est le problème que vous essayez de résoudre? Pouvez-vous donner un exemple de la façon dont il est utilisé et où il tombe en panne? – bhollis