ActiveRecord:使用字符串中的模型进行查询

时间:2010-11-12 21:18:28

标签: ruby-on-rails ruby activerecord

我有一个包含一组ActiveRecord模型的字符串,我想对作为字符串传递的每个模型执行相同的查询。

model_type = 'Comment'
id = 1
record = model_type.find(id)

model_type = 'Post'
id = 1
record = model_type.find(id)

我该怎么做?

2 个答案:

答案 0 :(得分:4)

您需要使用constantize方法。

model_type.constantize.find(id)

接受任意用户数据并按此评估时要小心。您可以为未知类生成异常。

答案 1 :(得分:1)

constantize很好,我以前没见过那个。以下是我过去的做法:

@list = Kernel.const_get(@type).find_by_id_and_account_id(params[:id], current_account.id)

我不确定哪个更好,constantize看起来更干净:)