teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2019/12/20 22:10

投稿

winterboum
winterboum

スコア23654

answer CHANGED
@@ -19,4 +19,25 @@
19
19
  end
20
20
  end
21
21
  ```
22
- これですと ModuleBをとり込むときに file modele_a.rbは読まれますので、追加定義が取り込まれます
22
+ これですと ModuleBをとり込むときに file modele_a.rbは読まれますので、追加定義が取り込まれます
23
+
24
+ 追記2
25
+ ただ、私ですとこういうclassの定義はしません
26
+ rails g model ModuleP::ClassA
27
+ とすると
28
+ app/models/module_p.rb
29
+ app/models/module_p/class_a.rb
30
+ ができます。
31
+ ```
32
+ # module_p.rb
33
+ module ModuleP
34
+ def self.table_name_prefix
35
+ 'module_p_'
36
+ end
37
+ end
38
+ # module_p/class_a.rb
39
+ class ModuleP::ClassA < ActiveRecord::Base
40
+ end
41
+ ```
42
+ こういう形での記述をします
43
+ ActiveRecord::Base でなければ不要な宣言は消しますが。

1

追記

2019/12/20 22:10

投稿

winterboum
winterboum

スコア23654

answer CHANGED
@@ -5,4 +5,18 @@
5
5
  全てのmoduleが取り込まれれば他のmoduleで定義されたclassを使うことは出来ますが、classの呼び方に注意が要ります
6
6
  ModuleP に取り込まれた ModuleA の ClassPA を ModlePに取り込まれたModuleBのClassPB から使うとき、
7
7
  ClassPA を呼ぶと ModuleB::ClassPA が未定義 と多分言われます。
8
- ModuleP::ModuleA::ClassPA(間違いかも) の様に呼ばないと。
8
+ ModuleP::ModuleA::ClassPA(間違いかも) の様に呼ばないと。
9
+
10
+ 追記
11
+ とするとこういうのかなぁ
12
+ ModuleAのfileの中で ModulePを追加定義して、その中でclassを定義する
13
+ ```
14
+ */*/module_a.rb
15
+ module ModuleP::ModuleA
16
+ end
17
+ module ModuleP
18
+ class ClassPA
19
+ end
20
+ end
21
+ ```
22
+ これですと ModuleBをとり込むときに file modele_a.rbは読まれますので、追加定義が取り込まれます