Как проверить наличие на модели с конкретным полем - PullRequest
0 голосов
/ 08 декабря 2010

Как я могу обновить все поля в таблице, где значение записи равно нулю, с validate_presence_of без записи всех полей одно за другим?

Ответы [ 2 ]

2 голосов
/ 08 декабря 2010

Вы имеете в виду значения по умолчанию? Самый простой способ - установить значения по умолчанию в вашей базе данных

add_column :posts, :excerpt, :text, :default => "No excerpt available"

validates_presence_of только проверяет, присутствует ли значение или нет.

При желании вы можете установить before_validation крючок:

before_validation :set_values

def set_values
  attributes.each do |attr|
    self.send("#{attr}=".to_sym, 'Default value') if attr.nil?
  end
end
0 голосов
/ 08 декабря 2010

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

Однако, если вы хотите обновить группу записей одним запросом к базе данных, вы можете использовать метод update_all.Это может выглядеть примерно так:

Record.update_all "value = 'default_value'", "value IS NULL"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...