是否可以对不属于模型的表单项进行验证?

时间:2009-11-12 23:16:26

标签: ruby-on-rails validation

所以我有一个注册表格,其中一部分是账单/信用卡信息。该信息全部由第三方应用程序存储和处理,因此数据不会存储在我们的数据库中。

那么我怎样才能通过Rails中的validates_方法运行这些项目? (validates_presence_ofvalidates_length_of等等)

或者我是否会在这些项目的错误位置进行验证?

3 个答案:

答案 0 :(得分:1)

对于使用Rails3的未来读者,请检查ActiveModel:

require 'active_model'

class Place
  include ActiveModel::Validations
  validates_presence_of :name
  attr_accessor :name
end

答案 1 :(得分:0)

您可以创建虚拟模型以方便表单的信息。无需将模型保存到数据库。

只需在app / models中创建一个新文件,你就可以了。

示例:app / models / 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。否则继续处理。

答案 2 :(得分: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