Я использую Ruby on Rails 3 и пытаюсь получить строку регулярного выражения из базы данных SQL для последующего метода проверки.
В миграции базы данных у меня есть:
create_table :profile_authorizations do |t|
t.string :param
t.string :param_value
end
В моей модели:
class User < ActiveRecord::Base
email_regex = Parameter.find_by_param('regex').param_value
validates :email,
:format => { :with => email_regex }
end
В базе данных я создаю регулярное выражение для электронной почты следующим образом:
Parameter.create(:param => 'regex', :param_value => '/\A[a-zA-Z0-9_\.]+@[a-zA-Z0-9-]+\.[a-zA-Z]{0,4}\z/i')
Используя этот код, я получаю эту ошибку:
ArgumentError
A regular expression must be supplied as the :with option of the configuration hash
Я пытался также использовать эти
Parameter.find_by_param('regex').param_value.to_s
Parameter.find_by_param('regex').param_value.to_i
, но это не работает.
Что это не так?
Этот код
@email_regex = Parameter.find_by_param('regex').param_value
<%= debug @email_regex %>
приведет к выводу
--- /\A[a-zA-Z0-9_\.]+@[a-zA-Z0-9-]+\.[a-zA-Z]{0,4}\z/i
Я попробовал это:
Regexp.new(Parameter.find_by_param('regex').param_value)
Это некажется, генерирует ошибки, но проверка ": with => email_regex" не распознает регулярное выражение.
В этом случае отладка приводит к
--- !ruby/regexp /\/\A[a-zA-Z0-9_\.]+@[a-zA-Z0-9-]+\.[a-zA-Z]{0,4}\z\/i/