【问题标题】:Mongoid not save embedded documentsMongoid 不保存嵌入文档
【发布时间】:2014-11-03 12:38:12
【问题描述】:

我正在尝试将 Card 保存到 Board(Board 已持久化):

def createCard(user, board, section, color)
    res = false
    ua = UserAccount.find_by(username: user)
    board = Board.find_by(_id: board)
    card = Card.new
    card.section = section
    card.color = color
    card.changes
    board.cards << card
    return card
end

此方法返回带有持久 ID 的卡片,但如果我搜索板,这不包含任何卡片字段。

【问题讨论】:

  • 您只是新建了一个 Cart 实例,但没有将其保存到数据库中。
  • "board.cards
  • 哦,也许你需要检查一下购物车是否保存成功,见cart.errors
  • 你是对的,我的卡有错误。谢谢!

标签: ruby mongodb mongoid


【解决方案1】:

您需要在添加卡片记录后保存该板,以使更改生效。退卡前:

 def createCard(user, board, section, color)
    #...
    board.save
    return card
 end

【讨论】:

  • 感谢您的回答,但这不起作用。 Mongoid doc: Model#{name}.
  • 我同意,但是在您的示例中,您没有保留 board 的父文档,还是我遗漏了什么?
  • 也尝试通过父文档创建一个新的card,如下所示:card = board.cards.build
  • 是的,板子已保存,我正在尝试添加新卡。我会尝试使用构建。谢谢!
【解决方案2】:

我在卡中出现验证错误,我已经解决了它添加到服务方法:

...
if card.valid?
  board.cards << card
  return card
else
  return card.errors
end
...

感谢“dddd1919”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多