lib/cm_admin/models/column.rb in cm-admin-0.8.9 vs lib/cm_admin/models/column.rb in cm-admin-0.9.0
- old
+ new
@@ -1,10 +1,15 @@
+require_relative 'utils/associations'
+
module CmAdmin
module Models
class Column
+ include Utils::Associations
+
attr_accessor :field_name, :field_type, :header, :format, :prefix, :suffix, :exportable, :round, :height, :width,
- :cm_css_class, :link, :url, :custom_method, :helper_method, :managable, :lockable, :drawer_partial, :tag_class, :display_if
+ :cm_css_class, :link, :url, :custom_method, :helper_method, :managable, :lockable, :drawer_partial, :tag_class,
+ :display_if, :association_name, :association_type
def initialize(field_name, attributes = {})
@field_name = field_name
set_default_values
attributes.each do |key, value|
@@ -14,15 +19,24 @@
#formatting header (either field_name or value present in header attribute)
self.send("header=", format_header)
self.height = 50 if self.field_type == :image && self.height.nil?
self.width = 50 if self.field_type == :image && self.width.nil?
self.display_if = lambda { |arg| return true } if self.display_if.nil?
+
+ validation_for_association
end
#returns a string value as a header (either field_name or value present in header attribute)
def format_header
- self.header.present? ? self.header.to_s.gsub(/_/, ' ')&.upcase : self.field_name.to_s.gsub(/_/, ' ').upcase
+ header_value = if self.header.present?
+ self.header
+ elsif self.field_type.to_s == 'association'
+ self.association_name
+ else
+ self.field_name
+ end
+ header_value.to_s.titleize.upcase
end
def set_default_values
self.exportable = true
self.managable = true
@@ -33,9 +47,8 @@
class << self
def find_by(model, search_hash)
model.available_fields.find { |i| i.name == search_hash[:name] }
end
end
-
end
end
end