Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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 Rails数据库:种子错误“;未定义的方法“finder”需要类型条件和x27;对于nil:NilClass“;_Ruby On Rails_Database_Model_Sqlite_Seeding - Fatal编程技术网

Ruby on rails Rails数据库:种子错误“;未定义的方法“finder”需要类型条件和x27;对于nil:NilClass“;

Ruby on rails Rails数据库:种子错误“;未定义的方法“finder”需要类型条件和x27;对于nil:NilClass“;,ruby-on-rails,database,model,sqlite,seeding,Ruby On Rails,Database,Model,Sqlite,Seeding,尝试填充sqlite数据库时出现问题。关于具体的错误“finder\u需要\u type\u条件?”我找不到太多的信息,但我对Rails没有太多的经验,甚至怀疑问题出在哪里 型号: class Character < ActiveRecord::Base validates :user_id, :name, :class, presence: true end seeds.rb: Character.delete_all Character.create!([ {id: 1, n

尝试填充sqlite数据库时出现问题。关于具体的错误“finder\u需要\u type\u条件?”我找不到太多的信息,但我对Rails没有太多的经验,甚至怀疑问题出在哪里

型号:

class Character < ActiveRecord::Base
  validates :user_id, :name, :class, presence: true
end
seeds.rb:

Character.delete_all
Character.create!([
  {id: 1, name: "nameone", class: "Warrior", user_id: 1},
  {id: 2, name: "nametwo", class: "Mage", user_id: 1},
  {id: 3, name: "namethree", class: "Wizard", user_id: 1},
  {id: 4, name: "namefour", class: "Warlock", user_id: 1},
  {id: 5, name: "namefive", class: "Rogue", user_id: 1}
])
以及尝试种子时的错误:

$ bundle exec rake db:seed
rake aborted!
NoMethodError: undefined method `finder_needs_type_condition?' for nil:NilClass
/var/rubyapps/test/db/seeds.rb:2:in `<top (required)>'
Tasks: TOP => db:seed
$bundle exec rake db:seed
雷克流产了!
NoMethodError:nil:NilClass的未定义方法“finder\u需要类型\u条件”
/var/rubyapps/test/db/seeds.rb:2:in`'
任务:TOP=>db:seed

生成模型时我是否误解了什么?

将seeds.rb中的
class
替换为
class
,因为字符表中有列名
class

{id: 1, name: "nameone", class: "Warrior", user_id: 1},

列名不能为
,因为这是保留字。您已经在种子中使用了
character\u class
,而该种子在数据库中不存在,因此您只需将此列重命名为数据库

rails g migration RenameCharactersClassColumn
然后将此行添加到迁移文件中

rename_column :characters, :class, :character_class

运行rakedb:migrate

在我创建一个新的rails数据库并试图通过前端创建一个新条目时出现了相同的错误

我有一个名为“class”的专栏。因为它是一个新的数据库,没有任何信息,所以我简单地删除了它并重新创建了它,但对“class”列的调用有所不同。工作正常,没有更多的错误消息

rails g migration RenameCharactersClassColumn
rename_column :characters, :class, :character_class