classのattrに対して下記のようなpublic_sendで値を設定できるらしい。
public_send("#{attribute_name}=", val)
ということは、obj.hoge=の`hoge=`はメソッドなのか?と思って呟いていたら、attr_*はhoge フィールドとhoge= メソッドを定義するものだと教えてもらえた。(ありがたや〜)
だからpublic_sendで呼び出せるというわけ。
リファレンスにもバッチリ書いてある。
ref.xaio.jp
なるほど〜。
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
- 作者: 伊藤淳一
- 出版社/メーカー: 技術評論社
- 発売日: 2017/11/25
- メディア: 大型本
- この商品を含むブログを見る