0

私は2つのモデルを持っています:

class MenuPosition
  include Mongoid::Document
  field :name, type: String
  field :category, type: String

  field :portion, type: Integer
  field :carbo, type: Float
  field :fat, type: Float
  field :protein, type: Float

  field :colesterol, type: Float
  field :saturated_fats, type: Float
  field :suger, type: Float

  field :omega3, type: Float
  field :omega6, type: Float

  index :name, unique: true
  validates_uniqueness_of :name
end

class Menu
  include Mongoid::Document
  field :assigned_date, type: Date
  embeds_many :menu_position

  index :assigned_date, unique: true
  validates_uniqueness_of :assigned_date

  def self.test
    position = {
      "name" => "pork",
      "category" => "meal",
      "portion" => 100,
      "carbo" => 4,
      "fat" => 2,
      "protein" => 5,
      "colesterol" => 1,
      "saturated_fats" => 1
    }

    MenuPosition.safely.create!(position)
    position = MenuPosition.find_by_name("pork")
    p position

    Menu.safely.create!(assigned_date: Date.new(2011, 04, 01))
    menu = Menu.where(assigned_date: Date.new(2011, 04, 01)).entries[0]
    p menu

    menu.menu_position = [position]
    menu.save

    menu = Menu.where(assigned_date: Date.new(2011, 04, 01)).entries[0]
    p menu
    p menu.menu_position

    return 0
  end

self.test メソッドを使用して、埋め込みドキュメントをテストします。

it "test it" do
  Menu.test.should eq(0)
end

テストを実行すると、MenuPosition と Menu が挿入されますが、Menu.MenuPosition は満たされません。

#<MenuPosition _id: 4f87f93e83b7e01e4800003e, _type: nil, name: "pork", category: "meal", portion: 100, carbo: 4.0, fat: 2.0, protein: 5.0, colesterol: 1.0, saturated_fats: 1.0, suger: nil, omega3: nil, omega6: nil>
#<Menu _id: 4f87f93e83b7e01e4800003f, _type: nil, assigned_date: 2011-04-01 00:00:00 UTC>
#<Menu _id: 4f87f93e83b7e01e4800003f, _type: nil, assigned_date: 2011-04-01 00:00:00 UTC>
[] // <- here is menu.menu_position

どうすれば修正できますか?

アップデート:

私はこれを試しました:

Menu.create(assigned_date: Date.new(2011, 04, 01))
menu = Menu.where(assigned_date: Date.new(2011, 04, 01)).entries[0]
menu.menu_position.create(position)
menu.save
menu = Menu.where(assigned_date: Date.new(2011, 04, 01)).entries[0]
p menu
p menu.menu_position

しかし、それは戻ります:

<Menu _id: 4f880f0a83b7e0194c00003e, _type: nil, assigned_date: 2011-04-01 00:00:00 UTC>
[]

更新 2:

embedded_in :menuMenuPositionに追加すると機能します。しかし、この場合、Menu ドキュメントなしで MongoDb に MenuPosition ドキュメントを保存することはできません :(

4

0 に答える 0