Хорошо, интересный вопрос.Не уверен, что есть лучшее решение, чем это, но я бы использовал метод, пропускающий магию.
class MyVirtualModel
def respond_to?(method, include_private = false)
if method.to_s =~ /^find.*/
RealModel1.respond_to?(method, include_private) && RealModel2.respond_to?(method, include_private?)
else
false
end
end
def method_missing(method, *arguments, &block)
if method.to_s =~ /^find.*/
resultset1 = RealModel1.send(method, arguments)
resultset2 = RealModel2.send(method, arguments)
return resultset1 + resultset2
end
end
end