Как настроить ассоциации Mongomapper со сложными условиями?

StackOverflow https://stackoverflow.com/questions/3464119

  •  27-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь собрать ассоциацию, которая воспользуется индексацией документов Mongo. Например, у меня есть две коллекции, посты и темы. Посты имеют ключ тегов, который является индексированным набором тегов для поста - довольно ваниль. Хотя я хочу сделать, есть что-то в моей модели темы, как:

class Topic
  key :name, String
  many :posts, :query_conditions => {:tag => lambda {|i| i.name} }
end

Идея в том, что у меня есть тема с именем «Монпомаппер», когда я вызываю @ topic.posts, я хочу, чтобы ассоциация выполняла эквивалент:

post.find({tag: "mongomapper"})

Я эффективно понадобится что-то вроде параметра AR Finder_SQL (в комплекте с возможностью интерполировать значения для каждого экземпляра в запрос), которые я еще не смог найти в параметрах ассоциации MM. Что-то подобное существует?

Это было полезно?

Решение

После копания через мм внутренних органов я решил, что это просто не произойдет. В частности, ассоциации HAS_MANY всегда ограничены A: Entertain_Key => Proxy_owner._id дополнение к запросу; Там нет способа избежать добавления критериев, что означает, что вы не можете создать ассоциации с пользовательскими искателями.

Я только что использовал названный объем на мою модель и метод помощника на модели темы.

class Post
  scope :tagged, lambda {|tag| where(:tags => tag)}
end

class Topic
  def posts
    Post.tagged(name.downcase)
  end
end

Это возвращает прокси-сервер запроса, поэтому для всех намерений и целей я могу относиться к нему, как ассоциация для чтения. Работает достаточно хорошо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top