У меня есть модель User
и когда я создаю один, я хочу, чтобы прагматично установки некоторых ключей API, а что нет, а именно:
@user.apikey = Digest::MD5.hexdigest(BCrypt::Password.create("jibberish").to_s)
Как установить стандартные атрибуты в модели рубинового
Я хочу, чтобы иметь возможность запустите User.create!(:email=>"[email protected]")
и создайте пользователя со случайно созданным ключом API и секретным.
В настоящее время я делаю это в контроллере, но когда я попытался добавить пользователя по умолчанию в файл seeds.rb
, я получаю ошибку SQL (говоря, что мой apikey имеет значение null).
Я попытался переопределить определение save
, но это вызвало проблемы, когда я обновил модель, потому что она переопределит значения. Я попытался переопределить определение initialize
, но это возвращает nil:NilClass
и сломал вещи.
Есть ли лучший способ сделать это?
Я думаю, что 'before_create' может быть хорошим, но если он проверяет присутствие apikey, ему нужно будет сделать это в' before_validation'. – theIV
Если я делаю 'User.new (params)', то '@ user.save' является запуском фильтра' before_create'? –
Да, потому что сохранение действительно действует как созданный в этом случае, поскольку '@ user.new_record?' Вернет true. – theIV