【问题标题】:Rails: How to validate data manually using a given model?Rails:如何使用给定模型手动验证数据?
【发布时间】:2011-08-24 13:47:46
【问题描述】:

我正在创建一个 Tumblr 替代品来学习如何使用 Rails。我在身份验证部分,我决定从头开始。我想允许用户使用他们的用户名或电子邮件登录。用户通过 Sessions 控制器登录,但我需要验证登录名是有效的用户名还是有效的电子邮件。所以我需要使用 User 模型来验证 Sessions 控制器中的数据。

我在 SO:How do I validate a non-model form in Rails 3? 上找到了这个答案,但它会迫使我重复验证。这是唯一的方法吗,还是有另一种更清洁的方法?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 validation


    【解决方案1】:

    我能想到的最佳选择是创建一个模块,然后将其包含在您的用户模型和您将用于表单的对象中:

    module AuthenticationValidation
      def self.included( base )
        base.validates :username, :presence => true
        base.validates :email, :presence => true
        # add your other validations here
      end
    end
    

    然后在你的模型中包含这个模块:

    class User < ActiveRecord::Base
      include AuthenticationValidation
    end
    
    class LoginForm
      include ActiveModel::Validations
      include ActiveModel::Conversion      
      include AuthenticationValidation
    
      attr_accessor :username, :email
    end
    

    然后您就避免了重复验证本身。

    【讨论】:

      猜你喜欢
      • 2014-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多