Вы можете использовать:
validate :any_present?
def any_present?
if %w(field1 field2 field3).all?{|attr| self[attr].blank?}
errors.add :base, "Error message"
end
end
РЕДАКТИРОВАТЬ: обновлено с исходного ответа для Rails 3+ в соответствии с комментарием.
Но вы должны указать имена полей вручную.
Вы можете получить все столбцы содержимого модели с Model.content_columns.map(&:name)
, но он также будет содержать столбцы created_at
и updated_at
, и это, вероятно, не то, что вам нужно.