我有一个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用户:引用