Как инициализировать ActiveRecord со значениями в Rails?

В обычной Java я бы использовал:

public User(String name, String email) {
  this.name = name;
  this.email = f(email);
  this.admin = false;
}

Однако я не смог найти простой стандартный способ сделать в рельсах (3.2.3 )с ActiveRecords.

1. переопределить инициализацию

def initialize(attributes = {}, options = {})
  @name  = attributes[:name]
  @email = f(attributes[:email])
  @admin = false
end

, но она может быть пропущена при создании записи из БД

2. использовать обратный вызов after_initialize

, переопределив его:

def after_initialize(attributes = {}, options = {})
 ...
end

или с помощью макроса :

after_initialize : my_own_little_init
def my_own_little_init(attributes = {}, options = {})
 ...
end

, но могут быть некоторые проблемы с устареванием .

Есть некоторые другие ссылки в SO , но они могут быть -устаревшими -.


Итак, какой правильный/стандартный метод использовать?

25
задан Community 23 May 2017 в 12:02
поделиться