在 Rails 3.2 应用程序中,我有一个简单的关联
class Element < ActiveRecord::Base
has_many :categories
end
class Category < ActiveRecord::Base
belongs_to :element
validates :name, uniqueness: true
end
以及以下代码
element = Element.find_or_initialize_by_name(elem_name)
element.categories = cat_names.map { |name| Category.where(name: name, element_id: element).first_or_initialize }
当 cat_names 包含已使用的名称时,引发ActiveRecord::RecordNotSaved (无法替换资源,因为无法保存一个或多个新记录。) 。
据我了解 first_or_initialize 调用“新”,因此不应保存任何记录。这是预期的行为吗?
谢谢。