假设我有几个不同的模型,我通过将它们传递给其他类来构建复杂的关系:
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
方法中是否有ModelB
或apply
怎么办?我怎么能确定这个?
我无法base_relation.first.class
(与建议的here一样,因为查询尚未完全形成并准备好进入数据库。
答案 0 :(得分:2)
base_relation.klass
应该在没有数据库查询的情况下完成。