【问题标题】:undefined method `confirm!' for #<User>未定义的方法“确认!”对于#<用户>
【发布时间】:2013-01-14 06:17:04
【问题描述】:

我创建了一个文件seeds.rb indb/seeds.rb 这个文件的代码是

puts 'SETTING UP DEFAULT USER LOGIN'
user = User.create! :name => 'My Fir User', :email => 'rashmi@example.com', :password => 'please', :password_confirmation => 'please'
user.confirm!
user2 = User.create! :name => 'My Second User', :email => 'user2@example.com', :password => 'please', :password_confirmation => 'please'
user2.confirm!
puts 'New user created: ' << user.name

它给了我错误

rake aborted!
undefined method `confirm!' for #<User:0x934ab30>
/home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/activemodel-3.2.9/lib/active_model/attribute_methods.rb:407:in `method_missing'
/home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/attribute_methods.rb:149:in `method_missing'
/home/ritesh/Desktop/rails3-devise-rspec-cucumber/db/seeds.rb:10:in `<top (required)>'
/home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:245:in `load'
/home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:245:in `block in load'
/home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:236:in `load_dependency'
/home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:245:in `load'
/home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/engine.rb:520:in `load_seed'
/home/ritesh/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/railties/databases.rake:333:in `block (2 levels) in <top (required)>'
/home/ritesh/.rvm/gems/ruby-1.9.3-p327/bin/ruby_noexec_wrapper:14:in `eval'
/home/ritesh/.rvm/gems/ruby-1.9.3-p327/bin/ruby_noexec_wrapper:14:in `<main>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)

它正在为用户运行,因为它是在开发数据库中创建的,但是当它上线时 用户2.确认! 它抛出这个未定义的方法错误 我无法指出为什么例如确认!方法正在运行,第二个实例显示未定义??

【问题讨论】:

  • 您使用的是用户模型的设计吗?因为据我所知,AR 没有确认!方法
  • 确保在devise 类中的:confirmable 方法参数中有User

标签: ruby-on-rails devise ruby-on-rails-3.2 devise-confirmable


【解决方案1】:

当您在模型中包含可确认模块时,设计的确认功能就会出现。从外观上看,我认为您没有在模型中使用它。

您的代码应该有一个如下所示的可确认符号

class User < ActiveRecord::Base

  devise :database_authenticatable, :registerable, :omniauthable, :confirmable,
         :recoverable, :rememberable, :trackable, :validatable

end

【讨论】:

    猜你喜欢
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多