質問編集履歴

4

コードの追加

2020/07/31 07:23

投稿

rosalia
rosalia

スコア20

test CHANGED
File without changes
test CHANGED
@@ -204,4 +204,26 @@
204
204
 
205
205
  ```
206
206
 
207
+ optinoal:trueを外した後
208
+
209
+ ```ここに言語を入力
210
+
211
+ [16] pry(main)> a = user.active_notifications.create!(action:'like', micropost_id: 100,visited_id: 4)
212
+
213
+ (0.1ms) begin transaction
214
+
215
+ User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
216
+
217
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 4], ["LIMIT", 1]]
218
+
219
+ (0.1ms) rollback transaction
220
+
221
+ ActiveRecord::RecordInvalid: Validation failed: Miropost must exist, Comment must exist
222
+
223
+ from /Users/ryoga_h/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/activerecord-5.1.7/lib/active_record/validations.rb:78:in `raise_validation_error'
224
+
225
+ ```
226
+
227
+
228
+
207
229
  学習の身で自己解決力も乏しく自分では解決することができませんでした。どなたかご教授頂けると嬉しいです。

3

マイグレーションの追加

2020/07/31 07:23

投稿

rosalia
rosalia

スコア20

test CHANGED
File without changes
test CHANGED
@@ -166,4 +166,42 @@
166
166
 
167
167
  ```
168
168
 
169
+ マイグレーション
170
+
171
+ ```ここに言語を入力
172
+
173
+ class CreateNotifications < ActiveRecord::Migration[5.1]
174
+
175
+ def change
176
+
177
+ create_table :notifications do |t|
178
+
179
+ t.references :visitor, foreign_key: true, null: false
180
+
181
+ t.references :visited, foreign_key: true, null: false
182
+
183
+ t.references :micropost, foreign_key: true
184
+
185
+ t.references :comment, foreign_key: true
186
+
187
+ t.string :action, null: false
188
+
189
+ t.boolean :checked, default: false, null: false
190
+
191
+
192
+
193
+ t.timestamps
194
+
195
+ end
196
+
197
+ # rails5.0以降はt.referencesでindexが自動生成される
198
+
199
+ end
200
+
201
+ end
202
+
203
+
204
+
205
+ ```
206
+
169
207
  学習の身で自己解決力も乏しく自分では解決することができませんでした。どなたかご教授頂けると嬉しいです。

2

User.rb

2020/07/29 10:16

投稿

rosalia
rosalia

スコア20

test CHANGED
File without changes
test CHANGED
@@ -156,4 +156,14 @@
156
156
 
157
157
  ```
158
158
 
159
+ User.rb
160
+
161
+ ```ここに言語を入力
162
+
163
+ has_many :active_notifications, class_name: 'Notification', foreign_key: 'visitor_id', dependent: :destroy
164
+
165
+ has_many :passive_notifications, class_name: 'Notification', foreign_key: 'visited_id', dependent: :destroy
166
+
167
+ ```
168
+
159
169
  学習の身で自己解決力も乏しく自分では解決することができませんでした。どなたかご教授頂けると嬉しいです。

1

noitification.rbの追加

2020/07/29 10:11

投稿

rosalia
rosalia

スコア20

test CHANGED
@@ -1 +1 @@
1
- SQLite3::SQLException: no such table: のテーブル名がおかしい
1
+ mdSQLite3::SQLException: no such table: のテーブル名がおかしい
test CHANGED
@@ -134,6 +134,26 @@
134
134
 
135
135
  ```
136
136
 
137
+ Notification.rb
138
+
139
+ ```ここに言語を入力
140
+
141
+ class Notification < ApplicationRecord
142
+
143
+ default_scope -> { order(created_at: :desc) }
144
+
145
+ belongs_to :visitor, class_name: "User", foreign_key: "visitor_id", optional: true
146
+
147
+ belongs_to :visited, class_name: "User", foreign_key: "visited_id", optional: true
148
+
149
+ belongs_to :micropost, optional: true
150
+
151
+ belongs_to :comment, optional: true
152
+
153
+ end
137
154
 
138
155
 
156
+
157
+ ```
158
+
139
159
  学習の身で自己解決力も乏しく自分では解決することができませんでした。どなたかご教授頂けると嬉しいです。