我在 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
但这不起作用。有什么线索吗?