如何在不将查询提交到数据库的情况下确定ActiveRecord Relation的原始类

时间:2011-01-27 02:56:28

标签: ruby-on-rails ruby-on-rails-3 activerecord

假设我有几个不同的模型,我通过将它们传递给其他类来构建复杂的关系:

class UserDefinedParameter
  def apply(base_relation)
    base_relation.where(:abc => self.value)
    #I want to see if base_relation was a ModelA here
  end
end

class UserDefinedSort
  def apply(base_relation)
    base_relation.sort("#{self.col} DESC")
  end
end

[ModelA, ModelB].each do |m|
  result = m.where(:user => current_user)
  UserDefinedParameter.all {|udp| result = udp.apply(result)}
  UserDefinedSort.all {|uds| result = uds.apply(result)}
end

如果我需要知道ModelA方法中是否有ModelBapply怎么办?我怎么能确定这个?

我无法base_relation.first.class(与建议的here一样,因为查询尚未完全形成并准备好进入数据库。

1 个答案:

答案 0 :(得分:2)

base_relation.klass应该在没有数据库查询的情况下完成。