Ruby on rails 我该怎么办';验证是否存在';Desive中的新专栏-电子邮件和;用户模型上的pw?
这是我的Ruby on rails 我该怎么办';验证是否存在';Desive中的新专栏-电子邮件和;用户模型上的pw?,ruby-on-rails,ruby-on-rails-3,devise,Ruby On Rails,Ruby On Rails 3,Devise,这是我的用户型号: class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :token_authenticatable, :confirmable, :timeoutable, :recoverable, :rememberable, :trackable, :validatable, :email_regexp =>
用户
型号:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :token_authenticatable, :confirmable, :timeoutable,
:recoverable, :rememberable, :trackable, :validatable,
:email_regexp => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :confirmed_at, :confirmation_token, :category_ids
validates_uniqueness_of :email, :case_sensitive => false
validates_confirmation_of :password
end
class用户/^([^@\s]+)@((?:[-a-z0-9]+\)+[a-z]{2,})$/i
属性可访问:电子邮件、:密码、:密码\u确认、:记住我、:姓名、:确认\u地址、:确认\u令牌、:类别\u ID
验证以下项的唯一性:电子邮件,:区分大小写=>false
验证密码的确认
结束
我想做的是在“已激活”帐户上强制“类别ID”的存在
我正在做——这一点值得注意,因为这是一个两阶段的过程。用户第一次输入其电子邮件地址时,会向其发送一封激活电子邮件,其中包含指向确认
控制器的链接
该确认控制器的视图包含需要验证的其他详细信息
如果我只是在用户
模型上定期执行验证
的存在,那么当用户最初只提交一个电子邮件地址时,Rails将失败(我不希望)
用户应:
输入电子邮件地址
单击电子邮件中的确认/激活链接
填写姓名、密码并选择一个类别
提交
步骤#3,“设计”强制对名称和pw进行在场验证。但不是我的名为category
的自定义项目
我该怎么做
谢谢。您可以将:on=>:update
选项传递到以验证是否存在,并且在创建时不会验证:
范例
validates_presence_of :category_ids, :on => :update
这仍然会覆盖Desive验证,至少在最初是这样。如何将此验证检查添加到设计检查?抱歉,我没有得到它。Desive与任何活动记录模型一样进行验证。它不会覆盖任何内容。那么,一旦我添加了它,它会首先自动检查category\u id
,如果它没有看到它,它会报告缺少一个类别。即使其他字段为空。所以问题是,如果我提交一个表单,其他所有内容都为空,它只会看到这个表单一开始是空的,并返回1个错误,而它应该返回3个错误(包括其他字段)。我在上添加了一个应用程序,如果您注册并转到/users/edit,该表单将按预期工作。也许你的问题与Desive无关(如果可能的话,试着在vanilla rails应用程序上重现它,然后我可以看一看)