Module: DcidevActiveRecord
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/dcidev_active_record.rb
Instance Method Summary collapse
- #reorder ⇒ Object
- #replace_child_from_array(new_child = [], column_name: "", child_name: "") ⇒ Object
- #set_order ⇒ Object
- #update_by_params(params, set_nil = true) ⇒ Object
Instance Method Details
#reorder ⇒ Object
73 74 75 76 77 78 79 |
# File 'lib/dcidev_active_record.rb', line 73 def reorder return unless self.class.column_names.include?("view_order") return unless self.class.where(view_order: self.view_order).where.not(id: self.id).present? self.class.order(view_order: :asc, updated_at: :desc).each.with_index(1) do |f, i| f.update(view_order: i) end end |
#replace_child_from_array(new_child = [], column_name: "", child_name: "") ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/dcidev_active_record.rb', line 25 def replace_child_from_array(new_child = [], column_name: "", child_name: "") new_child = new_child.to_a formatted = [] existing_child = eval("self.#{child_name}") existing_child_values = existing_child.pluck(column_name.to_sym) delete_child = existing_child_values - new_child (existing_child_values + new_child).uniq.each do |lc| attr = { column_name => lc, "_destroy" => delete_child.include?(lc) } id = existing_child.detect { |ec| eval("ec.#{column_name} == #{lc.is_a?(String) ? "'#{lc}'" : lc}") } attr["id"] = id.id if id.present? formatted << attr end formatted end |
#set_order ⇒ Object
63 64 65 66 67 68 69 70 71 |
# File 'lib/dcidev_active_record.rb', line 63 def set_order return unless self.class.column_names.include?("view_order") if self.view_order.present? self.reorder else self.view_order = self.class.where.not(id: self.id).count + 1 self.save end end |
#update_by_params(params, set_nil = true) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/dcidev_active_record.rb', line 40 def update_by_params(params, set_nil = true) ActiveRecord::Base.transaction do self.class.column_names.each do |c| begin if set_nil eval("self.#{c} = params[:#{c.to_sym}]") if params.key?(c.to_sym) eval("self.#{c} = params['#{c}']") if params.key?(c) else eval("self.#{c} = params[:#{c.to_sym}]") if params.key?(c.to_sym) && params[c.to_sym] != nil eval("self.#{c} = params['#{c}']") if params.key?(c) && params[c] != nil end rescue IOError raise "Tidak dapat menyimpan file#{c}" end end params.select{|k, _| !k.is_a?(Symbol) && k.include?("_attributes")}.each do |k, _| eval("self.#{k} = params[:#{k.to_sym}]") end self.save end end |