Ruby / Rails でメタプログラミングを行う際に問題が発生しましたが、これはマイナーなはずですが、手がかりが得られません。
モデルに属性がある場合、アクティブなレコード リレーションに値を割り当てたくありません。
MyModelClass.p1_id,
.p2_id,
...
.p8_id
SecondModel.position #Integer in (1..8)
私は今、次のことをしたい
sms = SecondModel.where(:xyz => 'bla')
sms.each do |sm|
mmc = MyModellClass.first
mmc.#somehow construct method here = sm.id
end
何とかこれが実現するように
mmc.p1_id = sm.id
mmc.p2_id = sm.id
..
mmc.p8_id = sm.id
要約すると、その p*n*_id を動的に作成したいのですが、これがメソッドであることを Ruby に伝える方法がわかりません。私はこれまでに試しました:
mmc.send('p#{sm.position.to_s}_id'.to_sym) = sm.id
しかし、これはうまくいきません。手がかりはありますか?