Rails NoMethodError:“#<0x000055cd000b18a0>”:String0x000055cd000b18a0>的未定义方法'name'>

问题描述 投票:1回答:2

我在使用Active Record时遇到困难,我阅读了文档,并看到了我重新制作和工作的带有belongs_to的其他示例,当我在这里做错什么时,我再也没有头绪了。尝试调用配方.recipe_type.name我收到错误Rails NoMethodError:“#”的未定义方法'name':字符串

schema.rb


  create_table "recipe_types", force: :cascade do |t|
    t.string "name"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer "recipe_type_id"
    t.index ["recipe_type_id"], name: "index_recipe_types_on_recipe_type_id"
  end

  create_table "recipes", force: :cascade do |t|
    t.string "title"
    t.string "cuisine"
    t.string "difficulty"
    t.integer "cook_time"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.text "ingredients"
    t.text "cook_method"
  end
end

移民

  def change
    create_table :recipes do |t|
      t.string :title
      t.string :cuisine
      t.string :difficulty
      t.integer :cook_time

      t.timestamps
    end
  end
end
class AddFieldsToRecipe < ActiveRecord::Migration[5.2]
  def change
    add_column :recipes, :ingredients, :text
    add_column :recipes, :cook_method, :text
  end
end
class CreateRecipeTypes < ActiveRecord::Migration[5.2]
  def change
    create_table :recipe_types do |t|
      t.string :name

      t.timestamps
    end
  end
end
class AddRecipeRefToRecipeType < ActiveRecord::Migration[5.2]
  def change
    add_reference :recipe_types, :recipe_type, foreign_key: true
  end
end
ruby-on-rails ruby rails-activerecord
2个回答
2
投票

您似乎已将recipe_type参考添加到错误的表中。您上一次的迁移可能应该是


0
投票

所以最终的方案是:

© www.soinside.com 2019 - 2024. All rights reserved.