2016-11-28 2 views
0

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

class User 
    include Mongoid::Document 
    field :first_name, type: String 
    field :last_name, type: String 
    embeds_one :manager, class_name: "Manager" 
end 

class Manager 
    include Mongoid::Document 
    field :first_name, type: String 
    field :last_name, type: String 
    embedded_in :users, class_name: "User" 
end 

## ------------------------------------------------------------ 

User.create!(
    first_name: "First1" 
    last_name: "Last1" 
) 

но как создать новый менеджер с момента его встроенный?

ответ

0

Вы уверены, что хотите embeds_one? Потому что мне User и Manager, кажется, имеют те же атрибуты и так, что они могут содержаться в одном классе User с дополнительным столбцом manager_id, чтобы определить, кто является менеджером пользователь:

class User 
    include Mongoid::Document 
    field :first_name, type: String 
    field :last_name, type: String 
    belongs_to :manager, class_name: 'User' 
end 

Таким образом, вы можете сделать:

manager = User.create!(first_name: 'First', last_name: 'Last') 
user = User.create!(first_name: 'First', last_name: 'Last', manager: manager) 

Другая возможная причина того, что вы не хотите embeds_one отношение здесь является то, что менеджер может управлять более чем на 1 пользователя. Таким образом, невозможно встроить один и тот же менеджерский документ в разные документы User. Пожалуйста, поправьте меня, если я ошибаюсь.

Update

Обычно (с текущими отношениями), вы можете создать встроенные записи следующим образом:

user = User.new(first_name: 'First', last_name: 'Last') 
user.manager = Manager.new(first_name: 'First', last_name: 'Last') 
user.save! 
Смежные вопросы