У нас есть форма клиента, которая не хранит данные, но имеет форму, которая затем передает данные контакту. Что я хотел бы сделать, так это, когда клиент вводит свои данные, это взять почтовый индекс из формы, сравнить его со всеми почтовыми индексами и, если он совпадает, отправить свою контактную информацию менеджеру в своем регионе.
В двух словах Билл вводит 10001 и соответствует дб Zipcodes с идентификатором региона 3. Таким образом, менеджер региона 3 получает электронное письмо.
Для моделей у меня есть:
Zipcode
belongs_to :region
Region
has_many :zipcodes, dependent: :destroy
Contact
include ActiveModel::Model
attr_accessor :first_name, :last_name, :company, :region, :email, :message_for_mailer, :inquiry, :address, :city, :state, :zipcode
В моем ContactsController у меня есть следующее для создания:
def create
@contact = Contact.new(contact_params)
@contact.valid?
if captcha?
ContactMailer.contact_request(@contact).deliver if @contact.valid?
else
@contact.errors.add(:base, 'Please verify you are human')
end
respond_with @contact
end
Моей мыслью было следующее:
def create
@zipcode = Zipcode.all
@contact = Contact.new(contact_params)
@contact.valid?
if captcha?
if @contact.zipcode == @zipcode.zipcode
ContactMailer.custom_request(@contact).deliver if @contact.valid?
else
ContactMailer.basic_request(@contact).deliver if @contact.valid?
end
else
@contact.errors.add(:base, 'Please verify you are human')
end
respond_with @contact
end
Но я почти уверен, что это не сработает, поскольку я на самом деле не сравниваю с БД. Итак, как мне перебрать таблицу Zipcode с результатами создаваемых данных?