По моему опыту, DataMapper auto_upgrade
работает не очень хорошо - или, по меньшей мере, он не работает так, как я ожидаю. Если вы хотите добавить новый столбец в вашу модель, он будет делать то, что должен; попытайтесь сделать что-нибудь более сложное для столбца, и он, вероятно, не будет вести себя так, как вы ожидаете.
Например, если вы создаете свойство типа String
, оно изначально будет иметь длину 50 символов. Если вы заметили, что для хранения строки недостаточно 50 символов, добавление :length => 100
к модели будет недостаточным для auto_upgrade
изменения ширины столбца.
Кажется, вы наткнулись на другой недостаток, хотя можно утверждать, что, в вашем случае, возможно, поведение DataMapper не так уж плохо (вспомните устаревшие базы данных). Но дело в том, что при изменении ассоциации столбец Event
artist_id
не был удален, а затем при попытке сохранить Event
вы получите сообщение об ошибке, поскольку база данных сообщает об этом это обязательное поле.
Обратите внимание, что ошибка, которую вы получаете, не является ошибкой проверки: DataMapper думает, что все выглядит нормально, но при попытке сохранить объект выдает ошибку из базы данных.
Надеюсь, это поможет!