Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我该怎么办';验证是否存在';Desive中的新专栏-电子邮件和;用户模型上的pw?_Ruby On Rails_Ruby On Rails 3_Devise - Fatal编程技术网

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应用程序上重现它,然后我可以看一看)