質問編集履歴

4

追記

2018/09/20 09:53

投稿

kozica
kozica

スコア58

test CHANGED
File without changes
test CHANGED
@@ -179,3 +179,163 @@
179
179
  (コントローラーから呼び出しだからインスタンス変数では使えないからかな??)
180
180
 
181
181
  別モデル内の変数なので、やっぱりグローバル変数が適切なような気がしてきてますがいかがでしょうか?
182
+
183
+
184
+
185
+ ------------------------------------------------------------------------
186
+
187
+ ### 追記 バッチ処理した際の変数をモデルで使用したい
188
+
189
+ ```ruby
190
+
191
+ #config/schedule.rb
192
+
193
+ rails_env = ENV['RAILS_ENV'] || :development
194
+
195
+ set :output, 'log/crontab.log'
196
+
197
+ set :environment, rails_env
198
+
199
+
200
+
201
+ every 30.minute do
202
+
203
+ runner "Tasks::PersonalLogArrange.execute"
204
+
205
+ end
206
+
207
+
208
+
209
+
210
+
211
+ # webex/lib/tasks/personal_log_arrange.rb
212
+
213
+ require 'webex/app/models/personal_log'
214
+
215
+ class Tasks::PersonalLogArrange
216
+
217
+ def self.execute
218
+
219
+ PersonalLog.new.arrange
220
+
221
+ end
222
+
223
+ end
224
+
225
+
226
+
227
+ #app/models/personal_log.rb
228
+
229
+ def arrange
230
+
231
+ array = Array.new
232
+
233
+ personal_log = PersonalLog.all
234
+
235
+ personal_log.find_each do |x|
236
+
237
+ hash = Hash.new
238
+
239
+ begin
240
+
241
+ test = JSON.parse(x.decrypted_data)
242
+
243
+ rescue => error
244
+
245
+ test = JSON.parse(x.data)
246
+
247
+ end
248
+
249
+ if test.keys.include?("uid")
250
+
251
+ test["uid"] = "#{test["uid"]}(#{x.provider})"
252
+
253
+ end
254
+
255
+ hash[x.macaddr] = test
256
+
257
+ array.push(hash)
258
+
259
+ end
260
+
261
+ @new_data = array.each_with_object(Hash.new{|h,k|h[k] = Hash.new}){|it,memo|
262
+
263
+ it.each{|mac,val|
264
+
265
+ memo[mac].merge!(val){|_,s,o| s + ',' + o}
266
+
267
+ }
268
+
269
+ }
270
+
271
+ @new_data.transform_values!{|val| val.transform_values{|v| v.to_s.split(',').uniq.join(',')}}
272
+
273
+ puts @new_data
274
+
275
+ end
276
+
277
+
278
+
279
+ def export
280
+
281
+ {new_data: @new_data}
282
+
283
+ end
284
+
285
+
286
+
287
+ attr_reader :new_data
288
+
289
+
290
+
291
+ #app/controllers/events_controller.rb
292
+
293
+
294
+
295
+ def send_data
296
+
297
+ entry = Entry.new()
298
+
299
+ event = Event.new
300
+
301
+ event.probe_data_investigate
302
+
303
+ data = event.export
304
+
305
+
306
+
307
+ #追加したコード
308
+
309
+ personal_log = PersonalLog.new
310
+
311
+ new_data = personal_log.export
312
+
313
+ data.merge!(new_data)
314
+
315
+
316
+
317
+ entry.import(data)
318
+
319
+ Spark.new().webex_rooms_get
320
+
321
+ entry.entry_data_in_txt
322
+
323
+ entry.exit_data_in_txt
324
+
325
+ entry.webex_send_txt
326
+
327
+
328
+
329
+ entry.entry_exit_situation_update
330
+
331
+ entry.entry_exit_log_save
332
+
333
+ end
334
+
335
+
336
+
337
+ ```
338
+
339
+
340
+
341
+ バッチ処理の際にインスタンス変数を渡しようにすればよいと思うのですがわかりますでしょうか?

3

修正

2018/09/20 09:53

投稿

kozica
kozica

スコア58

test CHANGED
File without changes
test CHANGED
@@ -116,6 +116,66 @@
116
116
 
117
117
 
118
118
 
119
+ #app/controllers/events_controller.rb
120
+
121
+ def create
122
+
123
+ @event = Event.new(data: params[:data])
124
+
125
+ $timenow = Time.now
126
+
127
+
128
+
129
+ respond_to do |format|
130
+
131
+ if @event.save
132
+
133
+ format.html { redirect_to @event, notice: 'Event was successfully created.' }
134
+
135
+ format.json { render :show, status: :created, location: @event }
136
+
137
+ else
138
+
139
+ format.html { render :new }
140
+
141
+ format.json { render json: @event.errors, status: :unprocessable_entity }
142
+
143
+ end
144
+
145
+ end
146
+
147
+
148
+
149
+ Entry.new().probe_data_investigate
150
+
151
+
152
+
153
+ Spark.new().webex_rooms_get
154
+
155
+ entry = Entry.new()
156
+
157
+ entry.entry_data_in_txt
158
+
159
+ entry.exit_data_in_txt
160
+
161
+ entry.webex_send_txt
162
+
163
+
164
+
165
+ entry.entry_exit_situation_update
166
+
167
+ EntryLog.new().entry_exit_log_save
168
+
169
+ end
170
+
171
+
172
+
173
+
174
+
119
175
  ```
120
176
 
177
+ 仮に別モデルの定義したものをすべてmodels/entry.rbに移動させてもコントローラーからモデルメソッド呼び出しなのでインスタンス変数でも出来ませんでした。
178
+
179
+ (コントローラーから呼び出しだからインスタンス変数では使えないからかな??)
180
+
121
181
  別モデル内の変数なので、やっぱりグローバル変数が適切なような気がしてきてますがいかがでしょうか?

2

回答から追記

2018/09/18 08:51

投稿

kozica
kozica

スコア58

test CHANGED
File without changes
test CHANGED
@@ -57,3 +57,65 @@
57
57
  それが出来ません。
58
58
 
59
59
  グローバル変数は使わずに済む方法はないでしょうか?
60
+
61
+
62
+
63
+ ### 回答から追記
64
+
65
+ ```ruby
66
+
67
+ def create
68
+
69
+ @apple = new_data
70
+
71
+ @orenge = before_data
72
+
73
+ @bunana = max_data
74
+
75
+    ・
76
+
77
+    ・
78
+
79
+    ・
80
+
81
+ end
82
+
83
+ ```
84
+
85
+ 上記のような@appleなどの変数を下記のメソッド内で使用したいです。
86
+
87
+ ```ruby
88
+
89
+ #app/models/entry.rb
90
+
91
+ def entry_data_in_txt
92
+
93
+ $entry_txt = ""
94
+
95
+ @apple.each do |mac,time|
96
+
97
+ personal_info = []
98
+
99
+ personal_info = @orenge[mac].map{|k,v| v.present? ? "┃ ・#{k} : #{v}" : nil}.sort
100
+
101
+ if personal_info.empty?
102
+
103
+ $entry_txt << "┣━#{mac}さんが入室しました(#{time})\n"
104
+
105
+ else
106
+
107
+ personal_info.map!{|x| x.split(",").join("\n┃ ")}
108
+
109
+ $entry_txt << "┣━#{mac}さんが入室しました(#{time})\n#{personal_info.join("\n")}\n"
110
+
111
+ end
112
+
113
+ end
114
+
115
+ end
116
+
117
+
118
+
119
+ ```
120
+
121
+ 別モデル内の変数なので、やっぱりグローバル変数が適切なような気がしてきてますがいかがでしょうか?

1

修正

2018/09/18 08:43

投稿

kozica
kozica

スコア58

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  内のメソッドで変数を定義しました。
6
6
 
7
- それをコントローラー内で
7
+ それをコントローラー内で下記のように使用したいです。
8
8
 
9
9
 
10
10