ruby-on-rails - Rails 6迁移到对不同于rails标准的列的引用
问题描述
我有两个模型Wallet
和FakeWallet
。Wallet
应该有一个,并且FakeWallet
应该通过wallet_type
和来识别external_id
。这意味着我需要根据钱包external_id
字段添加引用。
标准迁移将是:
# rails g migration addReferencesToFakeWallets wallet:references
class AddReferencesToFakeWallets < ActiveRecord::Migration[6.1]
def change
add_reference :fake_wallets, :wallet, null: false, foreign_key: true
end
end
在rails db:migrate
产生我之后:
t.bigint "wallet_id", null: false
t.index ["wallet_id"], name: "index_fake_wallets_on_wallet_id"
如何通过external_id
而不是绑定这两个模型wallet_id
?
[编辑]
# schema.rb after suggestion from comments
create_table "fake_wallets", force: :cascade do |t|
t.decimal "balance", default: "0.0"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.bigint "external_id"
t.index ["external_id"], name: "index_fake_wallets_on_external_id"
end
create_table "wallets", force: :cascade do |t|
t.integer "wallet_type"
t.string "external_id"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
end
解决方案
推荐阅读
- android - 使用 RetainingDataSourceSupplier 播放动画图像
- cmake - 如何仅使用静态库构建 llvm 工具
- php - JWT 中的注销不起作用
- angularjs - 如何在 ng-click 指令上获取 col 值并与 scope.info 绑定
- java - 可从 PySpark/Python 调用的 Spark (2.3+) Java 函数
- kotlin - Room RxJava - onNext() 在 FlowableSubscriber 中调用一次
- javascript - 我无法从这个 php ajax 代码中获取数据。它有什么问题
- deployment - Gitlab CI 自动部署使用 rsync 和 sshpass
- reactjs - 从“react”导入 React 时获取“Uncaught SyntaxError: Unexpected identifier”
- vb.net - 如何为我的程序优先使用键盘快捷键?