Domanda

Dato quanto segue:

Foo has_many: bars,: through = > : Baz

e

Foo accetta_nested_attributes_for: bar

Voglio fare un find_or_create_by_name quando aggiungo un nuovo : bar , ma non so dove posso avere una sorta di before_add funzionalità.

Lo sfondo di questa domanda è Bar validates_uniqueness_of: name , che fornisce errori quando provo a creare un nuovo Foo che utilizza una Bar .

È stato utile?

Soluzione

Wow, devo essere stanco:

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

  def some_callback(b)
    #whatnot
  end
end

Ma ancora, nella parte some_callback , cosa fare? Ho provato cose come b = Bar.find_or_create_by_name (b.name) ma neanche questo funziona.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top