ruby-on-rails - 如果 has_many child 无效,则引发验证错误

标签 ruby-on-rails activerecord has-many

我有一个 has_many 的问题在所有 child 都有效之前不应验证的关联。

设置

rails g scaffold Hotel name
rails g scaffold RoomCategory name hotel:references

应用程序/模型/hotel.rb
class Hotel < ActiveRecord::Base
  has_many :room_categories, dependent: :destroy

  accepts_nested_attributes_for :room_categories,
                                :reject_if => 
                                proc {|attributes| attributes['name'].blank?},
                                allow_destroy: true
end

应用程序/模型/room_category.rb
class RoomCategory < ActiveRecord::Base
  belongs_to :hotel

  validates :name,
            presence: true,
            uniqueness: { scope: :hotel }
end

这个想法是给定的 hotel不能有两个room_categories同名。



我如何确保以下hotel示例不验证为真?
>> hotel = Hotel.new(name: 'Example')
>> hotel.room_categories.build(name: 'Suite')
>> hotel.room_categories.build(name: 'Suite')
>> hotel.save
>> hotel.valid?
=> true

谢谢!

最佳答案

尝试这个..

accepts_nested_attributes_for :room_categories, :reject_if => lambda { |a|  a[:name].blank?  }, :allow_destroy => true

关于ruby-on-rails - 如果 has_many child 无效,则引发验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27940828/

相关文章:

ruby-on-rails - rails : SQL_NO_CACHE in development for tuning

ruby-on-rails - 在 Ruby 中循环遍历多个数组

ruby-on-rails - ActiveRecord SQL执行时间

unit-testing - Rails 4 - 单元测试无法创建模型对象

ruby-on-rails - has_many 关系中的 Active Record 对象何时保存?

ruby-on-rails - rails 通过 AJAX 渲染所有 Action - 有没有简单的方法?

jquery - 使用远程提交 form_for 后刷新部分内容 : true

PHP MySQL Active Record 标准总和

ruby-on-rails-3 - 默认情况下在 Rails has_many 关系上使用范围

ruby-on-rails - rails : How to get has_many associations of a model