Рука болит (RSI), буду краток.
Гитхаб поломали. Потому что программисты на рельсах дебилы: http://blog.mhartl.com/2008/09/21/mass-assignment-in-rails-applications/
Вкратце, считается нормальным апдейтить строку базы данных тупо ВСЕМ, что пришло в POST-запросе.
Молодцы, чо.
Услышал мнения:
- "зато это удобно и не болят глаза от абстракций!"
- "это баг в рельсах, его должны пофиксить".
Всё это чушь собачья.
"Баг" действительно фиксят, запрещая автоматом апдейтить некоторые поля в модели. Их теперь можно будет апдейтить, только сказав волшебное слово "ахалай-махалай".
Ага, очень умнО. Теперь поведение метода new или update_attributes зависит от того, что определено в совсем другом месте.
Правильное решение (если действительно хочется краткости и не критична валидация):
user.update_selected_fields(request.post, ["name", "email"])
Всё больше укрепляюсь во мнении что руби надо сжечь точно так же как перл, ввиду непригодности его для серьёзных проектов более десяти строк длиной. Просто потому, что оно пробуждает в людях низменное.