2012-03-02 3 views
4

Я имею в модели Приглашения поля и приписываю, как:Validate Mongoid массива и рубин на рельсах

field :recipients, :type => Array 

У меня есть массив с 4 писем в моем контроллере, как:

@invitation.recipients = ['', '', '', ''] 

I хотите подтвердить в моей модели, что значение каждого массива соответствует адресу регулярного выражения электронной почты, например:

validates_format_of :recipients, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/u, :message => "is not a valid email address" 

Как проверить регулярное выражение массива в mongoid?

ответ

6

Как насчет:

RE = /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/u 
validate :recipients_format 
def recipients_format 
    unless recipients.all? { |r| r =~ RE } 
    errors[:recipients] = "are not all valid email addresses" 
    end 
end 
+0

Спасибо @clyfe, Этот код идет в контроллере или в модели? его возможно добавить метод с этим кодом before_save callback? Спасибо – hyperrjas

+0

Он идет в модели. Не уверен, что вы имеете в виду во второй фразе. – clyfe

+0

Большое спасибо. То есть, он работает очень хорошо! – hyperrjas

Смежные вопросы