我怎样才能使它至少需要两个选项记录提交产品?
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
5条答案
按热度按时间uinbv5nw1#
q1qsirdb2#
只是一个关于karmajunkie回答考虑:我会使用
size
而不是count
,因为如果一些构建的(未保存的)嵌套对象有错误,它将不会被考虑(它还没有在数据库中)。vd8tlhqk3#
如果您的表单允许删除记录,则
.size
将无法工作,因为它包含标记为销毁的记录。我的解决方案是:
vwoqyblh4#
更整洁的代码,使用Rails 5测试:
jucafojl5#
我想知道为什么没有人提到这个简单的解决方案。只需将此添加到您的父类:
在Rails 5.2.8(可能还有更高版本)中工作对我来说很有魅力。