お問い合わせフォームを検証します
-
12-09-2019 - |
質問
私は空白の電子メールを防ぐために検証する件名とメッセージとの簡単なお問い合わせフォームを持っています。
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/する
所属していません StackOverflow