回答編集履歴

2

表記を正しく直しました。

2018/04/25 07:14

投稿

nekoyama7
nekoyama7

スコア200

test CHANGED
@@ -1,12 +1,12 @@
1
- いませんMarkdown方式とは知らず、下書きコピー貼り付けたら、おかしくなってしまました。
1
+ 解決おめでとうございま表記しくしました。こちらが勉強になりました(笑)
2
2
 
3
- -----
3
+
4
4
 
5
5
  こんにちは。詳しくはないのですが、似た問題を解決しました。書籍を参考にしました。
6
6
 
7
7
  devise のテーブル(Userモデルに該当)
8
8
 
9
- ユーザ情報入力用のテーブル(Myintroモデルに該当)----user_id 列で、user.id を参照する。
9
+ ユーザ情報入力用のテーブル(Myintroモデルに該当)----user_id 列で、user.id を参照する。
10
10
 
11
11
 
12
12
 
@@ -24,19 +24,13 @@
24
24
 
25
25
 
26
26
 
27
- (2)--devise 側のテーブルから id を取得して、ここで、ユーザ情報入力用のテーブルに保存しないと、参照できない。
27
+ (2)--devise 側のテーブルから id を取得して、ここで、ユーザ情報入力用のテーブルに保存しないと、参照できない。
28
28
 
29
- ユーザ情報入力用インスタンス.new
29
+ @ユーザ情報入力用インスタンス.new
30
30
 
31
- ユーザ情報入力用インスタンス.save
31
+ @ユーザ情報入力用インスタンス.save
32
32
 
33
33
  どちらも、ここで行うことになる。
34
-
35
-
36
-
37
- 後で、また、書きます。
38
-
39
- ------------------------------------------------
40
34
 
41
35
 
42
36
 
@@ -44,7 +38,9 @@
44
38
 
45
39
 
46
40
 
41
+ ```
42
+
47
- # ユーザ情報入力テーブル---deviseモデル名_id 列--に、
43
+ # ユーザ情報入力テーブル---deviseモデル名_id 列--に、
48
44
 
49
45
  # 今、ログインしている人の devise の id があるか確認する。
50
46
 
@@ -54,19 +50,19 @@
54
50
 
55
51
 
56
52
 
57
- @はいれつ = ユーザ情報入力モデル.where('deviseモデル名_id == ?', current_deviseモデル名.id)
53
+ @はいれつ = ユーザ情報入力モデル.where('deviseモデル名_id == ?', current_deviseモデル名.id)
58
54
 
59
55
 
60
56
 
61
57
  if @はいれつ[0] == nil then
62
58
 
63
- # まだ、ユーザ情報入力モデルのレコードがない。
59
+ # まだ、ユーザ情報入力モデルのレコードがない。
64
60
 
65
61
 
66
62
 
67
63
  # ここで、新規入力を行う準備。new,create の url 使わない。
68
64
 
69
- @ひと = ユーザ情報入力.new
65
+ @ひと = ユーザ情報入力.new
70
66
 
71
67
 
72
68
 
@@ -76,15 +72,13 @@
76
72
 
77
73
 
78
74
 
79
- # ここで、ユーザ情報入力モデルのテーブルに保存。
75
+ # ここで、ユーザ情報入力モデルのテーブルに保存。
80
76
 
81
77
  @ひと.save
82
78
 
83
79
 
84
80
 
85
- # 私は理解できませんでしたが、参考にした書籍では、
86
-
87
- # 再度ここで、上記の where の検索。
81
+ # 保存したレコードを where の検索。
88
82
 
89
83
  @はいれつ = ユーザの情報入力モデル.where('deviseモデル名_id == ?', current_deviseモデル名.id)
90
84
 
@@ -96,14 +90,20 @@
96
90
 
97
91
  # 過去にログインしたとき保存された。
98
92
 
99
-
100
-
101
93
  end
102
94
 
103
95
 
104
96
 
105
- -----------------------------------------------------------------------
97
+ # 配列の最初の1個を代入
106
98
 
99
+ @ユーザの情報入力用インスタンス = @はいれつ[0]
100
+
101
+ ```
102
+
103
+
104
+
107
- コントローラ、if 文の中で、ユーザ情報入力テーブルに保存。つまり、ユーザ情報入力テーブルへの入力は、edit, update で行う。new, create ではない。
105
+ コントローラ、if 文の中で、ユーザ情報入力テーブルに保存。つまり、ユーザ情報入力テーブルへの入力は、edit, update で行う。new, create ではない。
108
106
 
109
107
  ややこしいです。理解するのに、かなり時間がかかりました。
108
+
109
+ 今、読み返すと、自分で、忘れている部分があります。(あー)

1

具体的にしました。Markdown 知らなくてすいません。

2018/04/25 07:14

投稿

nekoyama7
nekoyama7

スコア200

test CHANGED
@@ -1,3 +1,7 @@
1
+ すいません。Markdown方式とは知らず、下書きをコピー貼り付けたら、おかしくなってしまいました。
2
+
3
+ -----
4
+
1
5
  こんにちは。詳しくはないのですが、似た問題を解決しました。書籍を参考にしました。
2
6
 
3
7
  devise のテーブル(Userモデルに該当)
@@ -31,3 +35,75 @@
31
35
 
32
36
 
33
37
  後で、また、書きます。
38
+
39
+ ------------------------------------------------
40
+
41
+
42
+
43
+ 書かれている if current_user.Myintro.length >=1 と同じだと思いますが、私が動作確認できた方法は以下です。
44
+
45
+
46
+
47
+ # ユーザの情報入力テーブル---deviseモデル名_id 列--に、
48
+
49
+ # 今、ログインしている人の devise の id があるか確認する。
50
+
51
+ # where を使うので、配列で受け取り。
52
+
53
+ # @はいれつ[0]---最初の要素
54
+
55
+
56
+
57
+ @はいれつ = ユーザの情報入力モデル.where('deviseモデル名_id == ?', current_deviseモデル名.id)
58
+
59
+
60
+
61
+ if @はいれつ[0] == nil then
62
+
63
+ # まだ、ユーザの情報入力モデルのレコードがない。
64
+
65
+
66
+
67
+ # ここで、新規入力を行う準備。new,create の url 使わない。
68
+
69
+ @ひと = ユーザの情報入力.new
70
+
71
+
72
+
73
+ # 参照される、devise のテーブルの id を代入。
74
+
75
+ @ひと.deviseモデル名_id = current_deviseモデル名.id
76
+
77
+
78
+
79
+ # ここで、ユーザの情報入力モデルのテーブルに保存。
80
+
81
+ @ひと.save
82
+
83
+
84
+
85
+ # 私は理解できませんでしたが、参考にした書籍では、
86
+
87
+ # 再度、ここで、上記の where の検索。
88
+
89
+ @はいれつ = ユーザの情報入力モデル.where('deviseモデル名_id == ?', current_deviseモデル名.id)
90
+
91
+
92
+
93
+ else
94
+
95
+ # すでにユーザの情報入力テーブルにレコードがある。
96
+
97
+ # 過去にログインしたとき保存された。
98
+
99
+
100
+
101
+ end
102
+
103
+
104
+
105
+ -----------------------------------------------------------------------
106
+
107
+ コントローラ、if 文の中で、ユーザの情報入力テーブルに保存。つまり、ユーザの情報入力テーブルへの入力は、edit, update で行う。new, create ではない。
108
+
109
+ ややこしいです。理解するのに、かなり時間がかかりました。