【发布时间】:2017-02-07 02:57:38
【问题描述】:
我有两个型号StageBatch 和StageItem:
class StageItem < ApplicationRecord
has_and_belongs_to_many :stage_batches
end
class StageBatch < ApplicationRecord
has_and_belongs_to_many :stage_items
end
使用以下迁移:
class CreateStageBatchesAndStageItems < ActiveRecord::Migration[5.0]
def change
create_table :stage_items do |t|
t.string :name
t.timestamps
end
create_table :stage_batches do |t|
t.timestamps
end
create_table :stage_batches_and_stage_items, id: false do |t|
t.belongs_to :stage_item, index: true
t.belongs_to :stage_batch, index: true
end
end
end
当我尝试访问 stage_batches stage_items 时,出现以下错误:
irb(main):002:0> StageBatch.first.stage_items
StageBatch Load (0.2ms) SELECT "stage_batches".* FROM "stage_batches" ORDER BY "stage_batches"."id" ASC LIMIT ? [["LIMIT", 1]]
StageItem Load (0.4ms) SELECT "stage_items".* FROM "stage_items" INNER JOIN "stage_batches_items" ON "stage_items"."id" = "stage_batches_items"."stage_item_id" WHERE "stage_batches_items"."stage_batch_id" = ? [["stage_batch_id", 1]]
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: stage_batches_items: SELECT "stage_items".* FROM "stage_items" INNER JOIN "stage_batches_items" ON "stage_items"."id" = "stage_batches_items"."stage_item_id" WHERE "stage_batches_items"."stage_batch_id" = ?
- 我的迁移有问题吗?
- 命名约定有问题吗?
- 为什么我的表的名称似乎从
stage_batches_and_stage_items更改为 ` 我的迁移有问题吗? - 命名约定有问题吗?为什么我的表的名称似乎从
stage_batches_and_stage_items更改为stage_batches_items?
【问题讨论】:
标签: ruby-on-rails activerecord sqlite