2016-11-28 4 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の関連付けを行いますか?私にUserManagerは、同じ属性を持っているように見えるので、彼らは、ユーザーの管理者が誰であるかを識別するために、追加の列manager_idで単一のクラスUser中に含ませることができるので:

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

あなたが行うことができますこの方法:あなたがここにembeds_one関係を望んでいない

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

もう一つ考えられる理由は、管理者が1人の以上のユーザーを管理することができるということです。したがって、別のUserドキュメント内に同じマネージャードキュメントを埋め込むことはできません。私が間違っているなら、私を修正してください。

更新

通常(あなたの現在の関係を持つ)は、次のように埋め込まれたレコードを作成することができます。

user = User.new(first_name: 'First', last_name: 'Last') 
user.manager = Manager.new(first_name: 'First', last_name: 'Last') 
user.save! 
関連する問題