Sha256: 6ed2746d809622b35235b40429b34b02a180b993f417ddae483bf59fd4be6115

Contents?: true

Size: 1.11 KB

Versions: 7

Compression:

Stored size: 1.11 KB

Contents

=begin
  Camaleon CMS is a content management system
  Copyright (C) 2015 by Owen Peredo Diaz
  Email: owenperedo@gmail.com
  This program is free software: you can redistribute it and/or modify   it under the terms of the GNU Affero General Public License as  published by the Free Software Foundation, either version 3 of the  License, or (at your option) any later version.
  This program is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  See the  GNU Affero General Public License (GPLv3) for more details.
=end
module ActiveRecordExtras
  module Relation
    extend ActiveSupport::Concern

    module ClassMethods

      def update_or_create(attributes = {})
        assign_or_new(attributes).save
      end

      def update_or_create!(attributes = {})
        assign_or_new(attributes).save!
      end

      def assign_or_new(attributes)
        obj = first || new
        obj.assign_attributes(attributes)
        obj
      end
    end
  end
end

ActiveRecord::Base.send :include, ActiveRecordExtras::Relation

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
camaleon_cms-0.2.1 config/initializers/active_record_extension.rb
camaleon_cms-0.2.0 config/initializers/active_record_extension.rb
camaleon_cms-0.1.9 config/initializers/active_record_extension.rb
camaleon_cms-0.1.8 config/initializers/active_record_extension.rb
camaleon_cms-0.1.7 config/initializers/active_record_extension.rb
camaleon_cms-0.1.6 config/initializers/active_record_extension.rb
camaleon_cms-0.1.5 config/initializers/active_record_extension.rb