【问题标题】:Why would association.build not assign parent_id to it child?为什么 Association.build 不会将 parent_id 分配给它的孩子?
【发布时间】:2010-10-20 16:47:24
【问题描述】:

我有以下型号:

在plan.rb中

has_many :tickets

在ticket.rb中

belongs_to :plan
validates_presence_of :plan_id

在控制器中执行以下代码时

@plan.tickets.build( ... )
@plan.save

保存失败并显示票证错误消息:计划不能为空。 (计划有效。)

【问题讨论】:

    标签: ruby-on-rails ruby activerecord associations


    【解决方案1】:

    当我调用build 时,当我的对象是新的并且未保存时,我已经发生了这种情况。

    build 分配 plan_id,如果 @plan 的 id 为 nil,那么您的票证的 plan_id 将为 nil。因为build 没有验证或保存,所以你以后才知道。

    将关联对象添加到未保存对象的其他方法似乎会记住它未保存并适当地设置 id。所以试试这个:

     @plan.tickets << Ticket.new(...)
     @plan.save
    

    【讨论】:

    • 所以不可能有这样的验证,构建父级,构建关系子级而不是保存父级并且同时没有错误消息?
    猜你喜欢
    • 2018-08-15
    • 2020-02-06
    • 1970-01-01
    • 2014-09-30
    • 2014-02-10
    • 2011-08-11
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多