我有一个包含一组ActiveRecord模型的字符串,我想对作为字符串传递的每个模型执行相同的查询。
model_type = 'Comment'
id = 1
record = model_type.find(id)
model_type = 'Post'
id = 1
record = model_type.find(id)
我该怎么做?
答案 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
看起来更干净:)