我有一個簡單的聯繫表格,包含主題和消息,我想驗證以防止空白電子郵件。驗證聯繫表格
ActionMailer不支持驗證。我應該把它放在哪裏(即在一個分離的模型中或直接在控制器中)?
更新:在非ActiveRecord模型中實現驗證的最佳方式是什麼?
我有一個簡單的聯繫表格,包含主題和消息,我想驗證以防止空白電子郵件。驗證聯繫表格
ActionMailer不支持驗證。我應該把它放在哪裏(即在一個分離的模型中或直接在控制器中)?
更新:在非ActiveRecord模型中實現驗證的最佳方式是什麼?
也許這可以幫助你:http://activeform.rubyforge.org/
在Rails 3他們去耦驗證ActiveRecord的加載ActiveModel成。因此,如果您使用Rails或至少在您的項目中使用捆綁器或任何您喜歡的方法獲得ActiveModel gem,則可以在任何類中包含ActiveModel :: Validations。下面是一個例子類(加載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+引擎我寫ContactUs如果您遇到任何其他的你可以瀏覽在Github的代碼與您的實施有關的問題,或者如果您對應用程序沒有太自以爲是的話,請使用Gem。
我不認爲在這種情況下exdend ActiveRecord :: Base是一個好習慣。 – collimarco 2009-07-09 13:58:15