Pergunta

Dado o seguinte:

Foo has_many :bars, :through => :baz

e

Foo accepts_nested_attributes_for :bar

Eu quero fazer um find_or_create_by_name quando eu adicionar um novo :bar, mas eu não sei onde eu possa ter algum tipo de funcionalidade before_add.

O fundo desta questão é Bar validates_uniqueness_of :name, o que dá erros quando eu tento criar uma nova Foo que está usando um Bar existente.

Foi útil?

Solução

Wow I deve estar cansado:

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

  def some_callback(b)
    #whatnot
  end
end

Mas ainda assim, na parte some_callback, o que fazer? Eu tentei coisas como b = Bar.find_or_create_by_name(b.name) mas isso não quer trabalhar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top