カロリーメイトください

Barbaroi Ware(バルバロイ・ウェア)という名前でアプリ開発してます

『Ruby on Rails 5 アプリケーションプログラミング』を学習する23

Ruby on Rails 5アプリケーションプログラミング

Ruby on Rails 5アプリケーションプログラミング

序文

Ruby on Rails 5 アプリケーションプログラミング」学習23日目。
新章突入。

GitHub

github.com

進捗

  • 第6章 モデル開発
    • 6.1 リクエスト情報
      (学習時間:4時間)

実行結果

f:id:yjkym:20180415164235p:plain

感想

今日から6章、コントローラーについての学習。

2時間で終わらせるつもりだったのだけど、アップロード処理の振る舞いがよくわからなくて時間がかかってしまった。
モデルで定義されてるここがよくわかんないんだよねぇ。
↓/app/models/artist.rb

  # 'data='がメソッドの名前。
  # Rubyでは代入可能なメソッドをこのように定義する
  # data = XXX という記法で呼び出すことができる
  # よくわからんが、
  # @artist.update(params.require(:artist).permit(:data))
  # でこのメソッドが呼び出されている
  def data=(data)
    # pp ('data=呼び出し')
    self.ctype = data.content_type
    self.photo = data.read
  end

これ=がついてるから、'data'っていうメソッドについてなんかのデフォルト値を設定しているのかと思ったら、どうも'data='まででメソッド名のようだ。
こういう書き方をすることで直接代入ができるらしい。

defキーワードがついてるからメソッドを定義しているってことで間違いないと思うんだけど、書籍によるとここでdataプロパティを定義しています。
みたいなことを書いてるからさらに?????となっている。

実際にはコントローラーのpermitメソッドから:dataシンボルを経由して呼び出されているみたいだから、さらに分かりにくい。
まぁ丸写しでなんとか動くものは作れるような気がするからいいかな…。

カロリーメイトください。

BGM

One life / Zeleive
www.youtube.com

コード実装部分

GitHub見てね
github.com