Rails 3 find_or_create_by

Bin ich nach http://railscasts.com/episodes/102-auto-complete-association

Alles scheint in Ordnung. Ich bin versucht, zu erstellen eine Rechnung und auch eine client-on-the-fly. Es funktioniert. Alles cool.

client belongs_to-Konto
Rechnung belongs_to-Konto
Rechnung belongs_to-client

Buuut, beide Modelle (Client und Rechnung) haben ein obligatorisches Attribut: account_id.

Wenn ich versuche, erstellen Sie eine neue client on the fly bekomme ich eine Fehlermeldung :client_id: - can't be blank

Der Grund, warum ich immer diese Fehlermeldung es ist, weil ein Client kann nicht erstellt werden, da es die eine account_id in das Client-Modell. Wenn ich diese Zeile zu entfernen validates :account_id, :presence => true im Client-Modell wird die Rechnung Hinzugefügt, aber Client hat keine account_id.

Ich habe dies in clients_controller.rb in der create-Aktion, um einen Standardwert @client.account_id = current_user.account_id

Rechnung.rb

validates :account_id, :presence => true
validates :client_id, :presence => true

def client_name
  client.name if client
end

def client_name=(name)
  self.client = Client.find_or_create_by_name(name) unless name.blank?
end

InformationsquelleAutor leonel | 2011-10-05

Schreibe einen Kommentar