2016-06-20 2 views
0

У меня есть две моделейMongoid embeds_many связан коллекция остается пустой

class Supplier < User 
    include Mongoid::Document 
    embeds_many :images 
    accepts_nested_attributes_for :images 
end 

class Image 
include Mongoid::Document 
embedded_in :supplier 
end 

Когда я сохранять изображения в вложенном виде он получает сохранить поместить его в коллекции поставщика т.е.

s = Supplier.first 
s.images #some Image records 

Но проблема сбор самого изображения остается пустым то есть

Image.count # gives 0 

ответ

1

Документы вашей модели Image хранятся внутри документа вашей модели Supplier. Так что в основном нет коллекции с именем images, созданным в монго. Проверьте это на консоли mongo. У вас будет только коллекция suppliers и коллекция images.

Если вы хотите получить доступ изображений непосредственно без доступа к конкретным вы можете сделать это

Supplier.all.pluck(:images) 
#It will give you an array of all images 

Или реализовать has_many

class Supplier < User 
    include Mongoid::Document 
    has_many :images 
    accepts_nested_attributes_for :images 
end 

class Image 
    include Mongoid::Document 
    belongs_to :supplier 
end 
+0

это по умолчанию поведения Mongoid? Это не имеет смысла для меня. Я мог бы создать поле массива, если бы мне это нужно. Но я хочу получить запись изображения на основе id. 'Image.find' не' поставщик.first.images.find'. – Faizan

+0

То, что вы ищете, это 'has_many' вместо' embedds_many'. – Kumar

+0

Да, это последний доступный вариант – Faizan

Смежные вопросы