因此,我的seeds.rb文件中有以下内容:
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:inwrite_attribute_with_type_cast' /var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/attribute_methods/write.rb:32:inwrite_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:inreplace_keys‘/var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/associations/belongs_to_association.rb:14:inreplace' /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:incategory=' /var/lib/gems/2.3.0/gems/activemodel-5.0.2/lib/active_model/attribute_assignment.rb:46:inpublic_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:ineach' /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:inassign_attributes’/var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/core.rb:319:ininitialize' /var/lib/gems/2.3.0/gems/activerecord-5.0.2/lib/active_record/inheritance.rb:65:innew/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:innew' /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:inblock 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:inblock in run_rake_task' /var/lib/gems/2.3.0/gems/railties-5.0.2/lib/rails/commands/rake_proxy.rb:11:inrun_中的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:inrun_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:inrequire' /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:inload' /var/lib/gems/2.3.0/gems/spring-2.0.1/lib/spring/client/rails.rb:28:incall’/var/lib/gems/2.3.0/gems/spring-2.0.1/lib/spring/client/command.rb:7:incall' /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:inload”/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:inload' bin/rails:3:in’任务:=> db:=>:seed(参见-- trace运行任务的完整跟踪)
有什么需要我解决的吗?我可以让它种子只是类别和工作,但我需要的子类别以及,因为我希望他们在我的网站下拉。
我已经试着让这个愚蠢的东西工作很长时间了,但我不能把我的头脑放在整个类别/子类别的事情上。
类别和子猫的迁移代码:
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发布于 2017-05-23 04:45:53
铁轨中断了!ActiveModel::MissingAttributeError:无法写入未知属性category_id
此错误告诉您在category_id表中缺少subcategories属性。请确保您有这样的方法来修复错误。
发布于 2017-05-23 08:05:14
看看你的种子,我假设一个类别可以有多个子类别。
在这种情况下,您的迁移应该是:
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的主键列。
有关如何使用迁移的详细信息指定为这里。
你们的模型应该是:
class Category < ApplicationRecord
has_many :subcategories
end
class Subcategory < ApplicationRecord
belongs_to :category
end此外,我建议您将category_name重命名为name,将subcategory_name重命名为name。前缀的使用是多余的。
发布于 2022-08-11 07:44:45
在seeds.rb文件内迁移之前添加以下行
Category.reset_column_information
Subcategory.reset_column_informationhttps://stackoverflow.com/questions/44125942
复制相似问题