Ruby on rails 3 Rails 3.1验证多态关联的嵌套属性的唯一性

Ruby on rails 3 Rails 3.1验证多态关联的嵌套属性的唯一性,ruby-on-rails-3,polymorphic-associations,nested-attributes,Ruby On Rails 3,Polymorphic Associations,Nested Attributes,鉴于以下模型: ##Invoice.rb has_many :line_items, :as => :line_itemable accepts_nested_attributes_for :line_items ##LineItem.rb belongs_to :line_itemable, :polymorphic => true validates :employee_id, :presence => true, :uniqueness => { :scope =

鉴于以下模型:

##Invoice.rb
has_many :line_items, :as => :line_itemable
accepts_nested_attributes_for :line_items

##LineItem.rb
belongs_to :line_itemable, :polymorphic => true
validates :employee_id, :presence => true, :uniqueness => { :scope => [ :line_itemable_id, :line_itemable_type ] }
我如何验证以下新发票

i = Invoice.new
i.line_items << [ LineItem.new( :employee_id => 1 ), LineItem.new( :employee_id => 1 ) ]
i.valid?

我希望完全按照您所做的那样编写代码,但我发现绕过此操作的唯一方法是在Invoice类中编写自定义验证。此解决方案有一个缺点,即有问题的字段不会突出显示。

我希望完全按照您的方式编写代码,但我发现绕过此问题的唯一方法是在Invoice类中编写自定义验证。此解决方案的一个缺点是,有问题的字段不会突出显示。

有没有想过?我也遇到了同样的问题。似乎是因为行\u itemable\u id尚未填写且为零,所以验证不会失败。有没有想过?我也遇到了同样的问题。似乎是因为行\u itemable\u id尚未填写且为零,所以验证没有失败。
add_index :line_items, [ :employee_id, :line_itemable_type, :line_itemable_id ], :unique => true, :name => 'index_line_item_employee_id'