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(1つ以上の新しいレコードを保存できなかったため、リソースの置き換えに失敗しました)を発生させます。
私の理解では、first_or_initializeは「new」を呼び出すため、レコードを保存しないでください。これは予想される動作ですか?
ありがとう。