summaryrefslogtreecommitdiff
path: root/doc/development/sql.md
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2019-04-01 15:55:46 +0000
committerLin Jen-Shin <godfat@godfat.org>2019-04-01 15:55:46 +0000
commit700e8d1917462f509e430f78f7effca8df56bdba (patch)
treee1589388079b1a7f6b3302171edbc9c767730abc /doc/development/sql.md
parentf87ff7af538a6ac559217a4c7cfa0fd75f247fd6 (diff)
parent98a5976b787fad0797bc5e3231c48ab3f400bce6 (diff)
downloadgitlab-ce-700e8d1917462f509e430f78f7effca8df56bdba.tar.gz
Merge branch 'enable-rubocop-application-record' into 'master'
Document ApplicationRecord / pluck_primary_key Closes #59690 See merge request gitlab-org/gitlab-ce!26764
Diffstat (limited to 'doc/development/sql.md')
-rw-r--r--doc/development/sql.md15
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