Фон
Я использую настройки ledermann-rails-settings (https://github.com/ledermann/rails-settings) в проекте Rails 2/3) для виртуального расширения модели с определенными атрибутами, которые не обязательно помещать в БД в широкой таблице. и это работает плавно для наших нужд.
Еще одна причина, по которой я выбрал этот Gem, заключается в посте Как создать форму для плагина rails-settings , который более тесно связывает настройки ledermann-rails-settings с моделью с целью очистки form_for использование для поддержки графического интерфейса администратора. Это идеальное решение для обращения в службу поддержки form_for, хотя ...
Сейчас я сталкиваюсь с тем, что правильно проверяет динамические методы получения / установки перед передачей в модуль ledermann-rails-settings. В настоящий момент они сохраняются немедленно, независимо от того, была ли запущена проверка модели - я вижу через скрипт / консоль, что возникают ошибки проверки.
Пример
Например, я хотел бы проверить, что атрибут: foo находится в диапазоне от 0..100 для десятичного использования (или даже регулярного выражения). Я обнаружил, что в предыдущем посте я могу использовать стандартные валидаторы Rails (сюрприз, сюрприз), но я хочу приостановить фактическое сохранение любых значений до тех пор, пока они не будут рассмотрены - убедитесь, что пользователь GUI дал 61,43 в качестве числового значения .
Следующий код был заимствован из цитируемого поста.
class User < ActiveRecord::Base
has_settings
validates_inclusion_of :foo, :in => 0..100
def self.settings_attr_accessor(*args)
>>SOME SORT OF UNLESS MODEL.VALID? CHECK HERE
args.each do |method_name|
eval "
def #{method_name}
self.settings.send(:#{method_name})
end
def #{method_name}=(value)
self.settings.send(:#{method_name}=, value)
end
"
end
>>END UNLESS
end
settings_attr_accessor :foo
end
У кого-нибудь есть какие-либо мысли о том, чтобы вывести состояние модели на этом этапе, за исключением необходимости помещать это в фильтр до? Цель в том, чтобы иметь возможность использовать стандартные проверки и избегать проверки пользовательских проверок для каждого добавляемого нового settings_attr_accessor. Спасибо!