在我的应用程序中,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