验证联系表格

时间:2009-07-09 13:40:12

标签: ruby-on-rails validation forms contacts

我有一个简单的主题和消息联系表格,我想验证以防止发送空白电子邮件。

ActionMailer不支持验证。我应该把它放在哪里(即在分开的模型中或直接在控制器中)?

更新:在非ActiveRecord模型中实施验证的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

在Rails 3中,他们将验证与ActiveRecord分离为ActiveModel。因此,如果您正在使用Rails或者在项目中至少使用了Bundler或者您喜欢的方法中的ActiveModel gem,则可以在任何类中包含ActiveModel :: Validations。这是一个示例类(注意Bundler对我来说需要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

示例来自我写的ContactUs联系表格Rails 3+引擎如果您遇到任何其他实施问题,可以浏览Github上的代码,或者如果对您的应用程序不太满意,请使用Gem

答案 2 :(得分:0)

也许这有助于您:http://activeform.rubyforge.org/