gpt4 book ai didi

ruby-on-rails - 播种数据库时类型不匹配

转载 作者:数据小太阳 更新时间:2023-10-29 08:44:27 25 4
gpt4 key购买 nike

我正在尝试为应用程序数据库播种,但出现以下错误:

ActiveRecord::AssociationTypeMismatch: Role(#97332160) expected,
got Fixnum(#76482890)

这是我的 schema.rb 中关于与问题相关的两个表的部分:

create_table "roles", force: :cascade do |t|
t.string "role", limit: 50, null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

create_table "users", force: :cascade do |t|
t.string "first_name", limit: 100, null: false
t.string "surname", limit: 100, null: false
t.string "email", limit: 255
t.integer "role_id", limit: 11
t.string "password", limit: 150
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

add_index "users", ["first_name"], name: "index_users_on_first_name", using: :btree
add_index "users", ["role_id"], name: "index_users_on_role_id", using: :btree
add_index "users", ["surname"], name: "index_users_on_surname", using: :btree

add_foreign_key "users", "roles"

这是我的 seeds.rb 命令:

rl = Role.create(role: "root")
User.create(first_name: "Edvaldo", surname: "Silva de Almeida Júnior", email: "edvaldo@my.domain.com", role_id: rl.id, password: "my_password")

rl = Role.create(role: "admin")
User.create(first_name: "Daiely", surname: "Fanchin", email: "daiely@my.domain.com", role_id: rl.id, password: "other_password")

rl = Role.create(role: "user")
User.create(first_name: "César", surname: "Silva", email: "cesar@my.domain.com", role_id: rl.id, password: "yet_other_password")

我找到了 a question接受的答案建议我应该做类似的事情:

rl = Role.create(role: "root")
User.create(first_name: "Edvaldo", surname: "Silva de Almeida Júnior", email: "edvaldo@my.domain.com", role_id: Role.find(rl.id), password: "my_password")

我试过了,还是报错!此外,我使用 role_id 作为关联,而不是角色本身。因此,就我而言,它应该收到一个 Fixnum,而不是一个 Role

最佳答案

add_foreign_key "users", "roles" 这将为用户添加role_id列,无需单独编写t.integer "role_id",限制:11

应该有一些关联

  class User < ActiveRecord::Base
belongs_to :role
end

create_table "users", force: :cascade do |t|
t.string "first_name", limit: 100, null: false
t.string "surname", limit: 100, null: false
t.string "email", limit: 255
t.reference "role", index: true
t.string "password", limit: 150
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end


add_foreign_key "users", "roles", column: :role_id

希望它能解决它。

关于ruby-on-rails - 播种数据库时类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34554968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com