2012-11-24 96 views
0

我有一個消息模型,我一直在尋找各種gems/js進行客戶端驗證。然後我開始閱讀有關主動模型驗證,我很新的軌道,所以請原諒我不完全理解文檔。有效的模型驗證rails 3

首先我在說,我可以加載ActiveModel驗證執行客戶端驗證,並設置自己的自定義錯誤消息

我有我的消息模型的頂部

include ActiveModel::Validations 

延伸閱讀有糾正確定

,我應該使用

validates_with MyValidator 

但是我得到錯誤信息

uninitialized constant Message::MyValidator 

,如果我把這個模型

我也看過但─

To cause a validation error, you must add to the record‘s errors directly from within the validators message 

class MyValidator < ActiveModel::Validator 
def validate(record) 
record.errors.add :base, "This is some custom error message" 
record.errors.add :first_name, "This is some complex validation" 
# etc... 
end 

所以這是說,我可以添加這不起作用我自己的客戶端自定義錯誤消息?

我現在的問題是讓我的腦袋圍繞它要做的事情,我在哪裏放這些類和方法等..如果任何人都可以指出我在正確的方向,我會很感激,我真的想學習

謝謝

回答

1

ActiveModel驗證不提供客戶端驗證。如果您想在客戶端使用您的Rails驗證器,我會建議使用client_side_validations寶石。

如果您在入門時遇到困難,建議您在模型中執行一次簡單的驗證,並在嘗試將其移動到客戶端之前驗證它是否有效。例如,在您Message類:

# app/models/message.rb 
class Message 
    include ActiveModel::Validations 
    attr_accessor :sender 
    validates :sender, presence: true 
end 

# in the console 
m = Message.new 

m.valid?    #=> false 
m.errors.full_messages #=> ["Sender can't be blank"] 

然後開始與其他類型的validates工作,如長度或格式,然後用validate方法自定義的驗證,然後如果你終於覺得你需要它,一個完整的驗證類使用validates_with

+0

ah不夠公平,我在某處某處解釋錯了,謝謝你清理那個,客戶端是所有基於javascript的,那麼我認爲可能有一些軌道魔法的地方有這個內置的哈哈。 – Richlewis