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

回答編集履歴

3

修正

2018/05/30 09:06

投稿

asm
asm

スコア15149

answer CHANGED
@@ -51,7 +51,7 @@
51
51
  こんな感じにすることが多いですね
52
52
 
53
53
  **再追記**
54
- Rubyはif``ではなく[if式](https://docs.ruby-lang.org/ja/latest/doc/spec=2fcontrol.html#if)なので結果を返します。
54
+ Rubyはif****ではなく[if式](https://docs.ruby-lang.org/ja/latest/doc/spec=2fcontrol.html#if)なので結果を返します。
55
55
  > if 式は、条件が成立した節(あるいは else 節)の最後に評価し た式の結果を返します。else 節がなくいずれの条件も成り立たなけれ ば nil を返します。
56
56
  ```ruby
57
57
  def save

2

追記

2018/05/30 09:05

投稿

asm
asm

スコア15149

answer CHANGED
@@ -48,4 +48,21 @@
48
48
  end
49
49
  ```
50
50
 
51
- こんな感じにすることが多いですね
51
+ こんな感じにすることが多いですね
52
+
53
+ **再追記**
54
+ Rubyはif`文`ではなく[if式](https://docs.ruby-lang.org/ja/latest/doc/spec=2fcontrol.html#if)なので結果を返します。
55
+ > if 式は、条件が成立した節(あるいは else 節)の最後に評価し た式の結果を返します。else 節がなくいずれの条件も成り立たなけれ ば nil を返します。
56
+ ```ruby
57
+ def save
58
+ event = if hoge1?
59
+ hoge!
60
+ elsif hoge2?
61
+ hoge2!
62
+ else
63
+ raise 'Unauthorized!'
64
+ end
65
+ p event
66
+ binding.pry
67
+ end
68
+ ```

1

追記

2018/05/30 09:05

投稿

asm
asm

スコア15149

answer CHANGED
@@ -8,4 +8,44 @@
8
8
  end
9
9
  ```
10
10
 
11
- どうしても、変数を経由したい場合はインスタンス変数でどうにかならないか考えます。
11
+ どうしても、変数を経由したい場合はインスタンス変数でどうにかならないか考えます。
12
+
13
+ ---
14
+
15
+ **追記**
16
+
17
+ ```ruby
18
+ class Hoge
19
+ def save
20
+ raise 'Unauthorized!' unless hoge1?
21
+ p @event
22
+ binding.pry
23
+ end
24
+ def hoge!
25
+ @event = Eventなんちゃら
26
+ end
27
+ end
28
+
29
+ h = Hoge.new
30
+ h.hoge!
31
+ h.save
32
+ ```
33
+
34
+ ただ、これだと`save`呼び出す前に(もしくは`save`内で)`hoge!`を呼び出さないとエラーになります。
35
+ なので
36
+ ```ruby
37
+ class Hoge
38
+ def save
39
+ raise 'Unauthorized!' unless hoge1?
40
+ # @eventが未定義(もしくはnilやfalseの場合)初期化する
41
+ @event ||= hoge!
42
+ p @event
43
+ binding.pry
44
+ end
45
+ def hoge!
46
+ @event = Eventなんちゃら
47
+ end
48
+ end
49
+ ```
50
+
51
+ こんな感じにすることが多いですね