Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
aeab40b4
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
aeab40b4
编写于
7月 30, 2020
作者:
E
eileencodes
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add docs for abstract class generators
Adds documentation for
https://github.com/rails/rails/pull/39866
上级
98135434
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
45 addition
and
4 deletion
+45
-4
guides/source/active_record_multiple_databases.md
guides/source/active_record_multiple_databases.md
+45
-4
未找到文件。
guides/source/active_record_multiple_databases.md
浏览文件 @
aeab40b4
...
...
@@ -93,11 +93,11 @@ Lastly, for new primary databases you need to set the `migrations_paths` to the
where you will store migrations for that database. We'll look more at
`migrations_paths`
later on in this guide.
Now that we have a new database, let's set up the
model. In order to use the new database w
e
need to create a new abstract class and connect to the animals databases.
Now that we have a new database, let's set up the
connection model. In order to use th
e
ne
w database we ne
ed to create a new abstract class and connect to the animals databases.
```
ruby
class
Animals
Base
<
ApplicationRecord
class
Animals
Record
<
ApplicationRecord
self
.
abstract_class
=
true
connects_to
database:
{
writing: :animals
,
reading: :animals_replica
}
...
...
@@ -171,7 +171,7 @@ Note that there is no command for creating the users and you'll need to do that
to support the readonly users for your replicas. If you want to create just the animals
database you can run
`bin/rails db:create:animals`
.
## Migrations
##
Generators &
Migrations
Migrations for multiple databases should live in their own folders prefixed with the
name of the database key in the configuration.
...
...
@@ -187,6 +187,47 @@ so that the file is generated in the correct directory. The command can be run l
$
bin/rails generate migration CreateDogs name:string
--database
animals
```
If you are using Rails generators, the scaffold and model generators will create the abstract
class for you. Simply pass the database key to the command line
```
bash
$
bin/rails generate scaffold Dog name:title
--database
animals
```
A class with the database name and
`Record`
will be created. In this example
the database is
`Animals`
so we end up with
`AnimalsRecord`
:
```
ruby
class
AnimalsRecord
<
ApplicationRecord
self
.
abstract_class
=
true
connects_to
database:
{
writing: :animals
}
end
```
The generated model will automatically inherit from
`AnimalsRecord`
.
```
ruby
class
Dog
<
AnimalsRecord
end
```
Note: Since Rails doesn't know which database is the replica for your writer you will need to
add this to the abstract class after you're done.
Rails will only generate the new class once. It will not be overwritten by new scaffolds
or deleted if the scaffold is deleted.
If you already have an abstract class and its name differs from
`AnimalsRecord`
you can pass
the
`--parent`
option to indicate you want a different abstract class:
```
bash
$
bin/rails generate scaffold Dog name:title
--database
animals
--parent
Animals::Record
```
This will skip generating
`AnimalsRecord`
since you've indicated to Rails that you want to
use a different parent class.
## Activating automatic connection switching
Finally, in order to use the read-only replica in your application you'll need to activate
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录