首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >seeds.rb rails db:种子不工作

seeds.rb rails db:种子不工作
EN

Stack Overflow用户
提问于 2017-05-23 04:40:50
回答 3查看 2.6K关注 0票数 0

因此,我的seeds.rb文件中有以下内容:

代码语言:javascript
复制
pop_culture = Category.create(category_name: 'Pop Culture')
sports = Category.create(category_name: 'Sports')
tazos = Category.create(category_name: 'Tazos')
woolworths = Category.create(category_name: 'Woolworths')
Subcategory.create(subcategory_name: 'AFL', category: sports)
Subcategory.create(subcategory_name: 'NRL', category: sports)
Subcategory.create(subcategory_name: 'Basketball', category: sports)
Subcategory.create(subcategory_name: 'Baseball', category: sports)
Subcategory.create(subcategory_name: 'Cricket', category: sports)
Subcategory.create(subcategory_name: 'Ninja Turtles', category: pop_culture)
Subcategory.create(subcategory_name: 'Pokemon', category: pop_culture)
Subcategory.create(subcategory_name: 'Final Fantasy', category: pop_culture)
Subcategory.create(subcategory_name: 'Marvel Cards', category: pop_culture)
Subcategory.create(subcategory_name: 'DC', category: pop_culture)
Subcategory.create(subcategory_name: 'Yu-gi-oh', category: pop_culture)
Subcategory.create(subcategory_name: 'Looney Tunes', category: tazos)
Subcategory.create(subcategory_name: 'Cheetahs', category: tazos)
Subcategory.create(subcategory_name: 'Star Wars', category: tazos)
Subcategory.create(subcategory_name: 'Simpsons', category: tazos)
Subcategory.create(subcategory_name: 'Space Jam', category: tazos)
Subcategory.create(subcategory_name: 'Dreamworks', category: woolworths)
Subcategory.create(subcategory_name: 'Disney Dominoes', category: woolworths)
Subcategory.create(subcategory_name: 'Marvel Discs', category: woolworths)

当我在终端中运行db:seed时,它会抛出一个错误:

铁轨中断了!ActiveModel::MissingAttributeError:无法写入未知属性/var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/attribute.rb:182:in with_value_from_database' /var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/attribute_set.rb:53:inwrite_from_user‘/var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/attribute_methods/write.rb:50:in write_attribute_with_type_cast' /var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/attribute_methods/write.rb:32:in write_attribute’/var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/attribute_methods.rb:361:in []=' /var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/associations/belongs_to_association.rb:76:in replace_keys‘/var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/associations/belongs_to_association.rb:14:in replace' /var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/associations/singular_association.rb:22:in编剧/var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/associations/builder/association.rb:119:in category=' /var/lib/gems/2.3.0/gems/activemodel-5.0.2/lib/active_model/attribute_assignment.rb:46:in public_send‘/var/lib/gems/2.3.0/gems/activemodel-5.0.2/lib/active_model/attribute_assignment.rb:46:in _assign_attribute' /var/lib/gems/2.3.0/gems/activemodel-5.0.2/lib/active_model/attribute_assignment.rb:40:in块在_assign_attributes’/var/lib/gems/2.3.0/gems/activemodel-5.0.2/lib/active_model/attribute_assignment.rb:39:in each' /var/lib/gems/2.3.0/gems/activemodel-5.0.2/lib/active_model/attribute_assignment.rb:39:in中/var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/attribute_assignment.rb:26:in‘/var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/core.rb:319:in _assign_attributes' /var/lib/gems/2.3.0/gems/activemodel-5.0.2/lib/active_model/attribute_assignment.rb:33:in assign_attributes’/var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/core.rb:319:in initialize' /var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/inheritance.rb:65:in new/var/lib/gems/2.3.0/gems/activerecord-5。0.2/lib/active_record/heritance.rb:65:在/home/vic/railsapps/Swap_Deck/db/seeds.rb:12:in new' /var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/persistence.rb:33:in中创建‘/var/lib/gems/2.3.0/gems/activesupport-5.0.2/lib/active_support/dependencies.rb:287:in <top (required)>' /var/lib/gems/2.3.0/gems/activesupport-5.0.2/lib/active_support/dependencies.rb:287:inload’/var/lib/gems/2.3.0/gems/activesupport-5.0.2/lib/active_support/dependencies.rb:287:in block in load' /var/lib/gems/2.3.0/gems/activesupport-5.0.2/lib/active_support/dependencies.rb:259:inload_dependency‘/var/lib/gems/2.3.0/gems/activesupport-5.0.2/lib/active_support/Reliencies.rb:287: in /var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/tasks/database_tasks.rb:268:in load_seed‘/var/lib/gems/2.3.0/gems/railties-5.0.2/lib/rails/commands/rake_proxy.rb:14:in block in run_rake_task' /var/lib/gems/2.3.0/gems/railties-5.0.2/lib/rails/commands/rake_proxy.rb:11:in run_中的load_seed' /var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/railties/databases.rake:196:in块(2个级别)/var/lib/gems/2.3.0/gems/railties-5.0.2/lib/rails/commands/commands_tasks.rb:51:in run_command!' /var/lib/gems/2.3.0/gems/railties-5.0.2/lib/rails/commands.rb:18:in /home/vic/rake_task/rake_task_Deck/bin/rails:9:in require' /home/vic/railsapps/Swap_Deck/bin/rails:9:in‘/var/lib/gems/2.3.0/gems/spring-2.0.1/lib/spring/client/rails.rb:28:in load' /var/lib/gems/2.3.0/gems/spring-2.0.1/lib/spring/client/rails.rb:28:in call’/var/lib/gems/2.3.0/gems/spring-2.0.1/lib/spring/client/command.rb:7:in call' /var/lib/gems/2.3.0/gems/spring-2.0.1/lib/spring/client.rb:30:in运行“/var/lib/gems/2.3.0/gems/spring-2.0.1/bin/spring:49:in <top (required)>' /var/lib/gems/2.3.0/gems/spring-2.0.1/lib/spring/binstub.rb:31:in load”/var/lib/gems/2.3.0/gems/spring-2.0.1/lib/spring/binstub.rb:31:in <top (required)>' /home/vic/railsapps/Swap_Deck/bin/spring:15:in‘bin/rails:3:in load' bin/rails:3:in’任务:=> db:=>:seed(参见-- trace运行任务的完整跟踪)

有什么需要我解决的吗?我可以让它种子只是类别和工作,但我需要的子类别以及,因为我希望他们在我的网站下拉。

我已经试着让这个愚蠢的东西工作很长时间了,但我不能把我的头脑放在整个类别/子类别的事情上。

类别和子猫的迁移代码:

代码语言:javascript
复制
class CreateCategories < ActiveRecord::Migration[5.0]
  def change
    create_table :categories do |t|
      t.integer :category_id
      t.string :category_name
      t.references :subcategory_id, foreign_key: true

      t.timestamps
    end
  end
end

class CreateSubcategories < ActiveRecord::Migration[5.0]
  def change
    create_table :subcategories do |t|
      t.integer :subcategory_id
      t.string :subcategory_name
      t.references :category_id, foreign_key: true

      t.timestamps
    end
  end
end
EN

回答 3

Stack Overflow用户

发布于 2017-05-23 04:45:53

铁轨中断了!ActiveModel::MissingAttributeError:无法写入未知属性category_id

此错误告诉您在category_id表中缺少subcategories属性。请确保您有这样的方法来修复错误。

票数 0
EN

Stack Overflow用户

发布于 2017-05-23 08:05:14

看看你的种子,我假设一个类别可以有多个子类别。

在这种情况下,您的迁移应该是:

代码语言:javascript
复制
class CreateCategories < ActiveRecord::Migration[5.0]
  def change
    create_table :categories do |t|
      t.string :category_name
      t.timestamps
    end
  end
end


class CreateSubcategories < ActiveRecord::Migration[5.0]
  def change
    create_table :subcategories do |t|
      t.string :subcategory_name
      t.references :category, foreign_key: true
      t.timestamps
    end
  end
end

您不需要指定category_id和subcategory_id,因为迁移将自动生成名为id的主键列。

有关如何使用迁移的详细信息指定为这里

你们的模型应该是:

代码语言:javascript
复制
class Category < ApplicationRecord
  has_many :subcategories
end

class Subcategory < ApplicationRecord
  belongs_to :category
end

此外,我建议您将category_name重命名为name,将subcategory_name重命名为name。前缀的使用是多余的。

票数 0
EN

Stack Overflow用户

发布于 2022-08-11 07:44:45

seeds.rb文件内迁移之前添加以下行

代码语言:javascript
复制
Category.reset_column_information
Subcategory.reset_column_information
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44125942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档