Я слежу за http://railscasts.com/episodes/102-auto-complete-association
Все вроде нормально. Я пытаюсь создать счет-фактуру, а также клиента на лету. Это работает. Все круто.
клиент принадлежит_к_счету счет-фактура принадлежит_счету invoice belongs_to client
Но у обеих моделей (Client и Invoice) есть обязательный атрибут: account_id.
Когда я пытаюсь создать нового клиента на лету, я получаю ошибку :client_id: - can't be blank
Причина, по которой я получаю эту ошибку, заключается в том, что клиент не может быть создан, потому что для этого требуется account_id в модели Client. Если я удалю эту строку validates :account_id, :presence => true
в модели Client, то счет будет добавлен, но у клиента нет account_id.
У меня есть это в clients_controller.rb в действии create для установки значения по умолчанию @client.account_id = current_user.account_id
invoice.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