Должен ли я использовать обратные вызовы или я должен переопределить атрибуты? - PullRequest
0 голосов
/ 10 апреля 2010

Что является более "рельсовым"? Если я хочу изменить свойство модели, когда оно установлено, я должен сделать это:

  def url=(url)
    #remove session id
    self[:url] = url.split('?s=')[0]
  end

или это?

  before_save do |record|
    #remove session id
    record.url = record.url.split('?s=')[0]
  end

Есть ли какая-то выгода для того, чтобы делать это так или иначе? Если так, то почему? Если нет, то какой из них обычно более распространен?

1 Ответ

2 голосов
/ 10 апреля 2010

Очевидно, что эти два имеют разные варианты использования.

Первое должно быть сделано, если вам нужен доступ к измененному атрибуту до записи сохраненной. Например, вы хотите установить URL-адрес и сразу проверить измененное значение в соответствии с некоторым условием, прежде чем сохранять его в БД.

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

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