質問 |
||
| QNo.4006941 | Ruby on Rails: メソッドの定義で「self.」をつけるケースについて | |
|---|---|---|
| 質問者:kaiji |
メソッドの名前に「self.」をつけるケースというは、 どういうことがあてはまるのでしょうか. 具体的には、以下のようなname_displayメソッドを作ったのですが、 「self.」をつけないと、undifined methodエラーになってしまいます. 偶然、self.をつけたら動いたので、そういうものかとわかりました. ただ、理由がわかりません. ご存知の方、お教えください. Userモデル id,username class User < ActiveRecord::Base def self.name_display(userid) begin @username = User.find(userid) return @username.username rescue return '削除ユーザ' end end end |
|
困り度:
|
||
| 質問投稿日時: 08/05/08 16:59 |
||
回答良回答20pt |
|
| ANo.1 | この name_dispalyメソッドはどこでどのように使ってますか? def self.メソッド名 のようにして定義したメソッドは「クラスメソッド」 なのに対して、def メソッド名 のようにして定義したものは「インスタンスメソッド」となります。 後者の場合はそのクラスのインスタンスを生成した上で、そのインスタンスにメッセージを送る という形でメソッドを起動しなければなりません。 前者のクラスメソッドではインスタンスを生成しなくても呼び出すことができます。 |
|---|---|
| 回答者:sakusaker7 | |
| 種類:補足要求 どんな人:経験者 自信:参考意見 |
|
| 回答日時: 08/05/08 21:58 |
|
| |
| この回答へのお礼 | ありがとうございます! クラスメソッドですか…それでググってもっと調べてみます. インスタンスを生成する必要かないかの違いですね. …でも、なぜそういう違いが必要になるのだろう. それがわからないと、また偶然でつくるしかないですね. 腑に落ちるまでとても時間かかります. でも、糸口見つかったので大躍進です. ありがとうございます. |