Làm cách nào để có thể tạo ít nhất hai bản ghi tùy chọn để gửi một sản phẩm?Đường ray thuộc tính lồng nhau: yêu cầu ít nhất hai bản ghi
class Product < ActiveRecord::Base
belongs_to :user
has_many :options, :dependent => :destroy
accepts_nested_attributes_for :options, :allow_destroy => :true, :reject_if => proc { |attrs| attrs.all? { |k, v| v.blank? } }
validates_presence_of :user_id, :created_at
validates :description, :presence => true, :length => {:minimum => 0, :maximum => 500}
end
class Option < ActiveRecord::Base
belongs_to :product
validates :name, :length => {:minimum => 0, :maximum => 60}
end
Nó nên được khá đơn giản để làm với một xác nhận tùy chỉnh. Một cái gì đó như 'self.errors.add_to_base (" Hai tùy chọn được yêu cầu ") trừ khi self.options.length> = 2' – Todd
cảm ơn bạn đã làm việc! – morcutt
Nếu bạn đang sử dụng 'accept_nested_attributes_for' với' allow_destroy: true' thì bạn phải sử dụng 'marked_for_destruction?' Với liên kết con để tìm chiều dài chính xác của trẻ em, bởi vì nó có thể xảy ra trong khi đệ trình từ một số đối tượng đã được đánh dấu '_destroy: true' để hủy sau khi lưu đối tượng. Chiều dài, kích thước và số lượng sẽ không hoạt động hoàn hảo cho trường hợp đó. Liên kết này có câu trả lời hoàn hảo. [link] (http://stackoverflow.com/a/28476834/4377172) –