Question

Étant donné ce qui suit:

Foo has_many: bars,: through = > : baz

et

Foo accepte_attributs_autorités_pour: barre

Je veux faire un find_or_create_by_name lorsque j'ajoute un nouveau : bar , mais je ne sais pas où je peux avoir une sorte de before_add fonctionnalité.

Le fond de cette question est Bar. validates_uniqueness_of: name , ce qui génère des erreurs lorsque j'essaie de créer un nouveau Foo utilisant un Bar existant .

Était-ce utile?

La solution

Wow je dois être fatigué:

class Foo < ActiveRecord::Base
  has_many :bars, :through => :baz, :before_add => :some_callback

  def some_callback(b)
    #whatnot
  end
end

Mais encore, dans la partie some_callback , que faire? J'ai essayé des choses comme b = Bar.find_or_create_by_name (b.name) mais cela ne fonctionne pas non plus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top