Как определить исходный класс для отношения ActiveRecord, не отправляя запрос в базу данных - PullRequest
0 голосов
/ 27 января 2011

Предположим, у меня есть несколько разных моделей, и я строю сложные отношения, передавая их другим классам, таким как:

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 (как предложено здесь , поскольку запрос еще не полностью сформирован и еще не готов к отправке в базу данных.

1 Ответ

2 голосов
/ 27 января 2011

base_relation.klass должен сделать трюк без запроса к базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...