回答編集履歴
6
teisei
answer
CHANGED
File without changes
|
5
teisei
answer
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
社員 modelで
|
13
13
|
```ruby
|
14
14
|
after_save :set_bumon_name
|
15
|
-
|
15
|
+
belongs_to :department
|
16
16
|
def set_bumon_name
|
17
17
|
self.dep_name=self.department.dep_name
|
18
18
|
end
|
4
じゃ
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
結論から言いますと、する必要が全くないということです。
|
3
3
|
主な理由としては
|
4
4
|
0. クライアントとサーバーの通信量と回数は少なければ少ないほどいい
|
5
|
-
1. サーバー側が部門IDと部門名の紐付けを理解しているので、必要な時に結合すればいい
|
5
|
+
1. サーバー側が部門IDと部門名の紐付けを理解しているので、必要な時に結合すればいい(そもそもそれがRelationalDataBaseという概念)
|
6
6
|
2. RelationalDataBaseはできれば正規化(同じ情報を被って保存しない)することが望ましい
|
7
7
|
|
8
8
|
つまり社員モデルが部門名を持っているということが設計上の間違いなのです。
|
3
あ
answer
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
after_save :set_bumon_name
|
15
15
|
has_many :departments
|
16
16
|
def set_bumon_name
|
17
|
-
self.
|
17
|
+
self.dep_name=self.department.dep_name
|
18
18
|
end
|
19
19
|
```
|
20
20
|
というふうにして、くれぐれも部門名を送る
|
@@ -24,5 +24,5 @@
|
|
24
24
|
後
|
25
25
|
Department.all.map { |p| [p.dep_name, p.id] }
|
26
26
|
ですが
|
27
|
-
Department.pluck(:
|
27
|
+
Department.pluck(:dep_name,:id)
|
28
28
|
にすると見た目にも実行速度的にもサイコーです。
|
2
s
answer
CHANGED
@@ -12,10 +12,17 @@
|
|
12
12
|
社員 modelで
|
13
13
|
```ruby
|
14
14
|
after_save :set_bumon_name
|
15
|
-
has_many :
|
15
|
+
has_many :departments
|
16
16
|
def set_bumon_name
|
17
|
-
self.
|
17
|
+
self.department_name=self.department.name
|
18
18
|
end
|
19
19
|
```
|
20
20
|
というふうにして、くれぐれも部門名を送る
|
21
|
-
ということは考えないでください。
|
21
|
+
ということは考えないでください。
|
22
|
+
|
23
|
+
|
24
|
+
後
|
25
|
+
Department.all.map { |p| [p.dep_name, p.id] }
|
26
|
+
ですが
|
27
|
+
Department.pluck(:name,:id)
|
28
|
+
にすると見た目にも実行速度的にもサイコーです。
|
1
初心者向け注記
answer
CHANGED
@@ -5,6 +5,8 @@
|
|
5
5
|
1. サーバー側が部門IDと部門名の紐付けを理解しているので、必要な時に結合すればいい
|
6
6
|
2. RelationalDataBaseはできれば正規化(同じ情報を被って保存しない)することが望ましい
|
7
7
|
|
8
|
+
つまり社員モデルが部門名を持っているということが設計上の間違いなのです。
|
9
|
+
|
8
10
|
それでもどうしてもしたい、あえて正規化を崩したい
|
9
11
|
(検索時の負荷とかの正当な理由で)というときは
|
10
12
|
社員 modelで
|