diff options
author | Nick Thomas <nick@gitlab.com> | 2019-03-29 11:23:05 +0000 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2019-03-29 20:54:06 +0000 |
commit | 98a5976b787fad0797bc5e3231c48ab3f400bce6 (patch) | |
tree | ffb8799b5bbb65b3bcc7c54a8a59456f4777981c /doc/development | |
parent | 0d26c48332e7c580946adbd41795d4817909e2ef (diff) | |
download | gitlab-ce-98a5976b787fad0797bc5e3231c48ab3f400bce6.tar.gz |
Document ApplicationRecord / pluck_primary_key
We also enable the rubocop that makes it mandatory
Diffstat (limited to 'doc/development')
-rw-r--r-- | doc/development/sql.md | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/doc/development/sql.md b/doc/development/sql.md index 47519d39e74..edeca7fb298 100644 --- a/doc/development/sql.md +++ b/doc/development/sql.md @@ -155,6 +155,21 @@ The _only_ time you should use `pluck` is when you actually need to operate on the values in Ruby itself (e.g. write them to a file). In almost all other cases you should ask yourself "Can I not just use a sub-query?". +In line with our `CodeReuse/ActiveRecord` cop, you should only use forms like +`pluck(:id)` or `pluck(:user_id)` within model code. In the former case, you can +use the `ApplicationRecord`-provided `.pluck_primary_key` helper method instead. +In the latter, you should add a small helper method to the relevant model. + +## Inherit from ApplicationRecord + +Most models in the GitLab codebase should inherit from `ApplicationRecord`, +rather than from `ActiveRecord::Base`. This allows helper methods to be easily +added. + +An exception to this rule exists for models created in database migrations. As +these should be isolated from application code, they should continue to subclass +from `ActiveRecord::Base`. + ## Use UNIONs UNIONs aren't very commonly used in most Rails applications but they're very |