0

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

しかし、これはうまくいきません。手がかりはありますか?

4

1 に答える 1