2013-10-18 31 views
0

我在的Ruby/Rails必須是未成年人做一些元編程有一個問題,但我不能得到的線索。呼叫從構建字符串的方法中的Ruby/Rails

我wan't賦值給一個有效記錄的關係,具有我的模型屬性:

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的東西,但是我找不到,怎麼t哦,告訴紅寶石,這應該是一個方法。我試過到目前爲止:

mmc.send('p#{sm.position.to_s}_id'.to_sym) = sm.id 

但是,這是行不通的。任何線索?

回答

0

你接近。試試這個:

mmc.send("p#{sm.position.to_s}_id=", sm.id) 

在這裏,我們調用該方法=並通過屬性的值作爲第二個參數send

+0

非常感謝,因爲我認爲:簡單的解決方案,但我根本沒有得到它。 –