質問

私は空白の電子メールを防ぐために検証する件名とメッセージとの簡単なお問い合わせフォームを持っています。

actionmailerの検証をサポートしていません。どこで(すなわち、分離されたモデルまたは直接コントローラ内で)それを置くべきであるか

UPDATE:?非ActiveRecordのモデルの検証を実施するための最良の方法は何か。

役に立ちましたか?

解決

これは、任意のを助けていますか? http://forums.site5.com/showthread.php?t=18522

他のヒント

のRails 3では、彼らはActiveModelへのActiveRecordから検証を分離さ。あなたがRailsのを使用するか、または何バンドラと、プロジェクト内の少なくともActiveModelの宝石を持っているのであれば、あなたの好適な方法は、あなたが任意のクラス内ActiveModel ::検証を含めることができます。ここでは例のクラスは(ActiveModelはバンドラーによって私のために必要とされていることに注意)です。

class ContactUs::Contact
  include ActiveModel::Validations

  attr_accessor :email, :message

  validates :email,   :format => { :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i },
                      :presence => true
  validates :message, :presence => true

  def initialize(attributes = {})
    attributes.each do |key, value|
      self.send("#{key}=", value)
    end
    @attributes = attributes
  end

  def read_attribute_for_validation(key)
    @attributes[key]
  end

  def save
    if self.valid?
      ContactUs::ContactMailer.contact_email(self).deliver
      return true
    end
    return false
  end
end

の例では、お問い合わせフォームのRails 3+エンジンから来ている私は、お問い合わせのあなたは上のコードを閲覧することができます書きましたGithubのあなたの実装を持つ他の問題に実行するか、またはそれはあなたのアプリケーションのためにあまりにも独断でなければ宝石を使用している場合。

多分これはあなたを助けます: http://activeform.rubyforge.org/する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top