2009-11-12 47 views
4

所以我有一個註冊表單,其中的一部分是賬單/信用卡信息。該信息全部由第三方應用程序存儲和處理,因此數據不會存儲在我們的數據庫中。是否可以對不屬於模型的表單項進行驗證?

那麼我怎麼能仍然通過Rails中的validates_方法運行項目? (validates_presence_of,validates_length_of,等等等等)

或者我正在驗證這些項目的錯誤位置?

回答

0

您可以創建一個虛擬模型來簡化表單的信息。沒有要求將模型保存到數據庫。

只需在應用程序/模型中創建一個新文件,您就可以輕鬆前往。

例如:應用程序/模型/ ccinfo.rb

class Ccinfo < ActiveRecord::Base 

    attr_accessor :card_type, :card_number, :pin, :exp_month, :exp_date, :card_holder, ... 

    validates_presence_of :card_holder 
    ... 

end 

如果窗體是基於另一種模式,你可以只是移動上述模型的內部到模型的形式是基於,完全相同的影響。

您可以通過調用有效的驗證而不保存?方法。像任何其他模型一樣渲染錯誤(如果有效)?返回false。否則繼續處理。

0

是的,我相信這是可能的,例如

class User < ActiveRecord::Base 
    attr_accessor :card_number 
    validates_presence_of :card_number 
end 

您需要創建模型本身的屬性,然後驗證適用於它做到這一點

您也可以編寫自己的訪問將數據發送到第三方這樣

class User < ActiveRecord::Base 
    attr_accessor :card_number 
    validates_presence_of :card_number 

     def card_number=(number) 
     ..... 
     end 
    end 
1

對於未來的讀者誰使用Rails3中,加載ActiveModel結賬:

require 'active_model' 

class Place 
    include ActiveModel::Validations 
    validates_presence_of :name 
    attr_accessor :name 
end 
相關問題