Вместо того, чтобы вводить свою собственную повторную реализацию для вставки нескольких вложенных / связанных записей в разные таблицы, вам, вероятно, лучше использовать то, что Ecto
предоставляет из коробки: Ecto.Changeset.put_assoc/4
в User
' s changeset.
Он выполнит все проверки для вас и вернет неправильное значение changeset
, если что-то пошло не так.
If it makes you feel better, it is a known bug
Proposed workaround: (Not mine, from here
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Mozilla Firefox Problem</title>
<script type="text/javascript">
function fOnChange()
{
alert('OnChange Fired');
}
var val_textBox;
function fOnFocus()
{
val_textBox = document.getElementById('textBox').value;
}
function fOnBlur()
{
if (val_textBox != document.getElementById('textBox').value) {
fOnChange();
}
}
</script>
</head>
<body>
<form name="frm">
<table>
<tr>
<td><input type="text" id="textBox" name="textBox" onFocus="fOnFocus()" onBlur="fOnBlur()"></td>
</tr>
<tr>
<td><input type="submit" value="Submit"></td>
</tr>
</form>
</body>
</html>
Возможная альтернатива: не могли бы вы просто использовать таймер, чтобы узнать, когда значение текстового поля изменяется?
Вам нужно будет размыть поле ввода и установить на него фокус. Однако это потребует небольшого обмана.