如何在不同的数据库中生成模型的迁移addreferences



我有一个rails 6.1.3.2应用程序,它有两个数据库。我生成了一个像这样的scaffold UserProfile。

rails g scaffold UserProfile image_path:string bio:text user:references

但user_profiles表应该在A数据库中创建,而users表在B数据库中。B数据库中的Users表已经制作完成,正在使用中。所以我不能移动它。

生成的迁移是这样的。

def change
create_table :user_profiles do |t|
t.string :nickname
t.text :bio
#t.references :user, null: false, foreign_key: true
t.bigint :user_id, null: false, index: true
t.timestamps
end

我评论了t.references,因为它在我耙数据库时出错:migrate。

PG::UndefinedTable: ERROR:  relation "users" does not exist 
db/migrate/20210520022156_create_user_profiles.rb:3:in `change'

但如果我像上层迁移代码一样将t.references更改为t.bigint,rakedb:migrate就可以了,而且效果很好

user = User.first
user.user_profiles.create!(nickname: 'kikiki')
UserProfile Create (1.5ms)  INSERT INTO "user_profiles" ("nickname", "user_id", 
"created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id"  [["nickname", "kikiki"], 
["user_id", 8], ["created_at", "2021-05-20 06:29:26.522668"], ["updated_at", "2021-05-20 
06:29:26.522668"]]

这是设计的吗?还是我做错了什么?对于另一个数据库中关联模型的t.references,在rubyonrails迁移中,正确的方法是什么?

我使用这种方式。在之前创建user_profile

rails g AddUserToUserProfile用户:引用

相关内容

  • 没有找到相关文章

最新更新