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

91
6

Приложение Rails 2.3.11 Монгоид 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"? запрос.

Помогите!

спросил(а) 2021-01-19T15:56:34+03:00 9 месяцев, 1 неделя назад
1
Решение
92

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

def has_link?(url)
graph_links.any? { |doc| doc.url == url }
end

ответил(а) 2021-01-19T15:56:34+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема