Mongoid 1.9.2 + Rails 2.3: ошибки с возвратом BSON::OrderedHash вместо объекта

Приложение Rails 2.3.11

Mongoid 1.9.2 (последняя «устаревшая» ветка)

Поскольку документации для ветки Mongoid 1.X больше нет, я борюсь с тем, что я неправильно настроил в этом примере. Кажется, я неправильно запрашиваю встроенный документ. Как я должен делать это вместо этого?

class GraphLink
  include Mongoid::Document  
  embedded_in :graph_pages, :inverse_of => :graph_links  
end 

class GraphInlink
  include Mongoid::Document  
  embedded_in :graph_pages, :inverse_of => :graph_inlinks  
end

class GraphPage
  include Mongoid::Document

  embeds_many :graph_links
  embeds_many :graph_inlinks

  def add_relationship(link) 
    unless has_link?(url)
      self.graph_links << GraphLink.new(link)
      destination_page = GraphPage.where(:url => link[:url]).first
      destination_page.graph_links << GraphInlinks.new(link)
      destination_page.save
      self.save
    end
  end

  def has_link?(url)
    graph_links.where(:url => url).count > 0
  end

end

В консоли я набираю

a = GraphPage.new(page_data_1)
a.add_relationship(link1)

И он возвращается

Error : NoMethodError: undefined method `where' for BSON::OrderedHash:0x00000114c1e8e0 

с ошибкой "has_link?" запрос.

Помощь!


person Williamf    schedule 27.08.2011    source источник
comment
Старые документы Mongoid можно найти по адресу two.mongoid.org. .   -  person    schedule 04.12.2012


Ответы (1)


Я предполагаю, что вы не можете составлять такие запросы. Возможно, попробуйте

def has_link?(url)
  graph_links.any? { |doc| doc.url == url }
end
person Seamus Abshere    schedule 27.08.2011