【发布时间】:2014-08-15 11:16:03
【问题描述】:
在按照说明使用设计添加角色后尝试“rake db:seed”时出现以下错误,使用此tutorial
NoMethodError: # 的未定义方法 `find_or_create_by_name' ...
我的用户模型如下所示:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable,
:omniauthable, :omniauth_providers => [:facebook]
#Roles an default role setup
belongs_to :role
before_create :set_default_role
private
def set_default_role
self.role ||= Role.find_by_name('student')
end
end
种子.rb
['student', 'teacher', 'moderator', 'admin'].each do |role|
Role.find_or_create_by_name role
end
当我运行 rake db:seed 时,我在控制台中得到以下信息:
rake aborted!
NoMethodError: undefined method `find_or_create_by_name' for #<Class:0x0000010137df78>
/Users/Dizzy/.rvm/gems/ruby-2.1.1/gems/activerecord-4.1.1/lib/active_record/dynamic_matchers.rb:26:in `method_missing'
/Users/Dizzy/Documents/MM/mandarinminds/db/seeds.rb:10:in `block in <top (required)>'
/Users/Dizzy/Documents/MM/mandarinminds/db/seeds.rb:9:in `each'
/Users/Dizzy/Documents/MM/mandarinminds/db/seeds.rb:9:in `<top (required)>'
/Users/Dizzy/.rvm/gems/ruby-2.1.1/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:241:in `load'
/Users/Dizzy/.rvm/gems/ruby-2.1.1/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:241:in `block in load'
/Users/Dizzy/.rvm/gems/ruby-2.1.1/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:232:in `load_dependency'
/Users/Dizzy/.rvm/gems/ruby-2.1.1/gems/activesupport-4.1.1/lib/active_support/dependencies.rb:241:in `load'
/Users/Dizzy/.rvm/gems/ruby-2.1.1/gems/railties-4.1.1/lib/rails/engine.rb:543:in `load_seed'
/Users/Dizzy/.rvm/gems/ruby-2.1.1/gems/activerecord-4.1.1/lib/active_record/tasks/database_tasks.rb:184:in `load_seed'
/Users/Dizzy/.rvm/gems/ruby-2.1.1/gems/activerecord-4.1.1/lib/active_record/railties/databases.rake:173:in `block (2 levels) in <top (required)>'
谁能解释一下 `find_or_create_by_name' 是如何遇到这个问题的?
【问题讨论】:
标签: ruby-on-rails ruby devise