Ruby on rails -主动管理,不能与父资源同时创建嵌套资源



在我的应用程序中,Invoice有许多Item。因此,在我的活动管理UI中,我希望能够创建发票,同时创建其项目。

但我只能添加items后,invoice是使用Edit Invoice按钮在active admin创建。试图创建他们在一起不会直接我从New Invoice页的任何地方。没有显示任何错误。有人能帮我一下吗?

在我的app/admin/invoice.rb

中有以下表单结构
permit_params :paid, :due, :customer_id,
              items_attributes: [:price, :description, :invoice_id, :purchased_product_id]
form multipart: true do |f|
  f.inputs do
    input :customer
    input :due
    input :paid, as: :radio
  end
  f.inputs "Items" do
    f.has_many :items do |item|
      item.input :price
      item.input :description
      item.input :purchased_product
    end
  end
  f.actions
end

我在Invoice模型中添加了accepts_nested_attributes_for,如下所示:

class Invoice < ActiveRecord::Base
  belongs_to :customer
  has_many :items
  accepts_nested_attributes_for :items, allow_destroy: true
  validates :customer, presence: true

我使用的是Rails 4和activeadmin '~> 1.0.0.pre1'

问题是处理我的Item模型中的验证。我在Item模型类

中有以下验证规则
validates :price, :invoice, presence: true

这表示为了创建item,它必须连接invoice。但是由于在invoice及其包含的items的创建过程中,invoice还没有保存到数据库中。items无法找到invoice连接,验证失败。

通过删除invoice的存在验证来解决这个问题,到

validates :price, presence: true

最新更新