пятница, 8 августа 2014 г.

Rails как произвести вальвацию когда необходимо иметь одно из двух поле обязательно заполненым

я сделал так Решение не очень красивое но другой альтернативы я не нашел
class Clientsale < ActiveRecord::Base                                          
  attr_accessible :comment, :company_name, :dolznost, :email, :fio, :phone, :project_id, :url_name, :user_id
  #validates :email, email_format: { message: "Ошибка при вводе email", allow_nil: true, allow_empty: true }
  
  validates_each :email, :phone do |record, attr, value|
    record.errors.add(attr, 'Хотя бы один контакт должен быть указан') if $test_clientsale_00163563213_find_me_in_def_contact_test.empty?
  end
  validates_each :company_name, :url_name  do |record, attr, value|
     record.errors.add(attr, 'Хотя бы один параметр (Адрес сайта или Название компании) ') if $test_url_and_name_company_56456456__find_me_in_def_contact_test.empty?
  end

  before_validation :contact_test
  before_save :set_user_project

  private
  def contact_test
    $test_clientsale_00163563213_find_me_in_def_contact_test = self.phone.to_s + self.email.to_s
    $test_url_and_name_company_56456456__find_me_in_def_contact_test = self.company_name.to_s + self.url_name.to_s                                                                     
  end
 
  def set_user_project
   self.user_id = User.current.id
   project = Project.new
   project.name = "text"                                              
   project.identifier = "project" + generate_sufix
   self.project_id = project.id if project.save
  end
  
  def generate_sufix
     Time.new.to_i.to_s + Random.new.rand(1_000_000..9_999_999).to_s
  end

end

Комментариев нет:

Отправить комментарий

PHP: The Right Way блог програмышки
Яндекс.Метрика