为动态模型创建方法

时间:2013-03-09 05:16:32

标签: ruby-on-rails parameters

我很抱歉,如果有类似这样的问题,但我对如何解决我的问题感到困惑,所以我可以保持我的代码干。

我需要创建任务列表,以便用户可以查看尚未发布的交易。

我的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)。感谢。

1 个答案:

答案 0 :(得分: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的实例变量