質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.32%

rubyのmethodで=をつける意味

解決済

回答 3

投稿

  • 評価
  • クリップ 1
  • VIEW 3,139

ayu

score 214

こんばんわ。

たまにメソッドで=を見かけるのですが、どういう意味なんでしょうか?

paperclipのgemでこういうのを見かけたのですが、意味がわかりませんでした。

https://github.com/thoughtbot/paperclip/wiki/Attachment-downloaded-from-a-URL

class User < ActiveRecord::Base
  attr_reader :avatar_remote_url
  has_attached_file :avatar

  def avatar_remote_url=(url_value)
    self.avatar = URI.parse(url_value)
    # Assuming url_value is http://example.com/photos/face.png
    # avatar_file_name == "face.png"
    # avatar_content_type == "image/png"
    @avatar_remote_url = url_value
  end
end

どういうことなのか、よろしければ教えていただきたいですm(_ _)m

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+1

意味が無いという回答はちょっとどうかと思いますが、
ググってみるとちゃんと「要素代入関数」という名前が付いているようですね。

http://ztbuz.hateblo.jp/entry/2013/12/29/024103

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/22 23:11

    こんな名前があったのですね・・・

    ググり方が甘かったです>_<

    ありがとうございます!

    キャンセル

checkベストアンサー

0

普通なら, avatar_remote_url= メソッドは, 次の様に使いますね。

user = User.new
user.avatar_remote_url=('http://foo')

でも ruby では () を省略できるので

user.avatar_remote_url= 'http://foo'

と代入文に見えるように書くことができます。

rails の db/migreation の書き方も、() を省略して書いているだけで、どれもメソッド呼び出しをしてるのです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/22 23:10

    使い方を提示していただき、ありがとうございますm(_ _)m

    キャンセル

0

意味は特にありません。メソッド名の一部です。ただしメソッド名の末尾でのみ使用可能。
呼び出し時に、代入っぽく見えるという利点があるので、代入っぽいメソッドに使います。
イコールの前後に空白を入れてもOKです。

foo.avatar_remote_url = "http://~~"

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/22 22:57

    ああ、意味が無いというのは語弊がありました。
    文法的には意味が無いと言うことです。メソッド名末尾の`?`や`!`と同じ。
    慣習的に使い方が決まっているので、そういうレベルでは意味があります。

    キャンセル

  • 2016/06/22 23:12

    慣習的に使われていたのですね。
    いや、知りませんでした!
    ただ、今回で意味がわかりスッキリしました。
    ありがとうございます!

    キャンセル

  • 2016/06/22 23:17

    こちらこそ失礼しました、私も知らなかったのでへ〜と思って、名前も付いてるのに意味が無いといわれてしまっては可哀想じゃないかーw と思ったもので。

    キャンセル

  • 2016/06/22 23:33 編集

    リファレンスには、「要素代入」とあります。「要素代入関数」というのは何でしょうね??
    ググると10件だけありました。https://www.google.co.jp/?client=firefox-b#q=%22%E8%A6%81%E7%B4%A0%E4%BB%A3%E5%85%A5%E9%96%A2%E6%95%B0%22
    一般的とは言えない用語のようです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.32%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る