attr_protected только для обновлений? - PullRequest
4 голосов
/ 09 мая 2011

Я хочу иметь возможность защищать поле электронной почты учетной записи от обновления, но не при первом создании записи учетной записи.

Я попробовал следующее:

validate :email_is_unchanged, :on => :update
def email_is_unchanged
    errors.add :email, "can only be changed through confirmation" if email_changed?
end

но когда я пытаюсь сделать следующее (с существующей записью в базе данных):

a = Account.first

a.update_attributes ({: email => "Email@example.com")}

Возвращает true, но не сохраняет запись. Проверка ошибок показывает, что была добавлена ​​ошибка из метода проверки.

Есть ли лучший способ сделать это?

1 Ответ

2 голосов
/ 09 мая 2011

Попробуйте следующее:

class Account < ActiveRecord::Base
    attr_readonly :email
end

Это позволяет создавать новые записи с электронной почтой, но без последующего обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...