Проверка в Rails без модели

У меня есть форма, которая позволяет пользователю отправлять сообщение на электронную почту, и я хочу добавить к нему подтверждение. У меня нет модели для этого, только контроллер. Как мне сделать это в Rails?

Я подумывал о том, чтобы выполнить проверку в контроллере и отобразить ошибки пользователю, используя объект flash . Есть ли лучший способ сделать это?

7
задан Ajedi32 14 January 2015 в 19:33
поделиться

1 ответ

Лучшим подходом было бы заключить вашу псевдомодель в класс и добавить там проверки. Способ Rails гласит, что вы не должны помещать модели поведения в контроллеры, единственными валидациями должны быть те, которые связаны с самим запросом (аутентификация, авторизация и т. Д.)

В Rails 2.3+ вы можете включить ActiveRecord :: Validations , с небольшим недостатком, заключающимся в том, что вам нужно определить некоторые методы, ожидаемые слоем ActiveRecord.См. этот пост для более подробного объяснения. Приведенный ниже код адаптирован из этого сообщения:

require 'active_record/validations'

class Email

  attr_accessor :name, :email
  attr_accessor :errors

  def initialize(*args)
    # Create an Errors object, which is required by validations and to use some view methods.
    @errors = ActiveRecord::Errors.new(self)
  end

  # Required method stubs
  def save
  end

  def save!
  end

  def new_record?
    false
  end

  def update_attribute
  end

  # Mix in that validation goodness!
  include ActiveRecord::Validations

  # Validations! =)
  validates_presence_of :name
  validates_format_of :email, :with => SOME_EMAIL_REGEXP
end

В Rails3 в вашем распоряжении сексуальные проверки :)

6
ответ дан 7 December 2019 в 05:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: