2013-03-09 76 views
0

對不起,如果有類似這樣的問題,但我混淆瞭如何解決我的問題,所以我可以保持我的代碼幹。動態模型的創建方法

我需要創建一個任務列表所以用戶可以查看哪些事務未發佈。

application_controller.rb我想創造的東西,如:

(A)

def to_do_list(var) 
    @var.tableize = var.camelize.where(:status => 0).order("id desc") 
end 

(B)

def to_do_list(var, model_to_do) 
    var = model_to_do.where(:status => 0).order("id desc") 
end 

,而我home_controller.rb我想打電話給這樣的:

(A)

to_do_list(purchase_order_header) 
to_do_list(purchase_invoice_header) 
etc 

(B)

to_do_list(@purchase_order_headers, PurchaseOrderHeader) 
to_do_list(@purchase_invoice_headers, PurchaseInvoiceHeader) 
etc 

我如何做到這一點迷惑,併發送這些參數並設置我的方法,感謝您的幫助:D

ps。如果可以提供,我更喜歡選項(A)。謝謝。

+0

我也做了努力了選項**(A)**喜歡'「@#{var}」。tableize =「#{var}」。camelize .....' 但仍然返回錯誤。 :( – ksugiarto 2013-03-09 05:18:48

回答

0

我不知道這是否是你想要達到的目標,但請嘗試一下

to_do_list('purchase_order_header') 
to_do_list('purchase_invoice_header') 

def to_do_list(model) 
    instance_variable_set "@#{model}", model.camelize.constantize.where(:status => 0).order("id desc") 
end 

調用to_do_list後,你應該有實例變量稱爲@purchase_order_header@purchase_invoice_header

+0

這是像魔術般的工作:)謝謝 – ksugiarto 2013-03-09 06:40:46