ruby-on-rails - SQLite3::SQLException: 没有这样的表
问题描述
大家好!正在为 airBnb 风格的项目编写评级系统,所以我将对象 Host 和 Guest 作为对 User 对象的引用。但是我的代码有问题:
SQLite3::SQLException: no such table: main.hosts
事实上,该方法会查找我没有的主机表,因为它应该与用户相关联。
移民
class CreateReviews < ActiveRecord::Migration[6.0]
def change
create_table :reviews do |t|
t.text :comment
t.integer :star, default: 1
t.references :car, foreign_key: true
t.references :reservation, foreign_key: true
t.references :guest, foreign_key: true
t.references :host, foreign_key: true
t.string :type
t.timestamps
end
end
end
架构
create_table "reviews", force: :cascade do |t|
t.text "comment"
t.integer "star", default: 1
t.integer "car_id"
t.integer "reservation_id"
t.integer "guest_id"
t.integer "host_id"
t.string "type"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["car_id"], name: "index_reviews_on_car_id"
t.index ["guest_id"], name: "index_reviews_on_guest_id"
t.index ["host_id"], name: "index_reviews_on_host_id"
t.index ["reservation_id"], name: "index_reviews_on_reservation_id"
楷模:
class HostReview < Review
belongs_to :host, class_name: "User"
end
class User < ApplicationRecord
....
has_many :host_reviews, class_name: "HostReview", foreign_key: "host_id"
解决方案
我认为你可以这样做:
t.references :host, references: :users, foreign_key: true
或者
t.integer :host_id
接着
add_foreign_key :reviews, :users, column: :host_id
推荐阅读
- reactjs - useParams 不适用于 useState(React 挂钩)
- javascript - JS:创建一个 Promise 类——函数如何接受一个 arg?
- java - 道模式的抽象
- swift - 如何删除列表中的 NavigationLink
- java - 带有来自 jar 文件的内联图像的 JEditorPane
- javascript - Bin Counter - 增加一个 javascript 数组
- c++ - 函数在某处被重新定义,我看不到我在哪里做
- node.js - 为什么重启时我的 NGINX 到 pm2 上游速度很慢?
- javascript - JS 自定义事件触发 2 次
- r - 为什么R中的Latex不会显示这个数字?