Sha256: ac6959f59182c7f2f36c8f9b4abaaed5378f9d7552eb6325cdf9486c0a25476d

Contents?: true

Size: 972 Bytes

Versions: 9

Compression:

Stored size: 972 Bytes

Contents

# frozen_string_literal: true

module Phlexi
  module Display
    module Components
      class Association < Base
        include Concerns::DisplaysValue

        def render_value(value)
          p(**attributes) {
            display_name_of(value)
          }
        end

        protected

        def display_name_of(obj, separator: ", ")
          return unless obj.present?

          # Retrieve the value from a predefined list
          %i[to_label name title].each do |method|
            name = obj.public_send(method) if obj.respond_to?(method)
            return name if name.present?
          end

          # Maybe this is a record?
          if (primary_key = Phlexi::Field.object_primary_key(obj))
            return "#{obj.class.model_name.human} ##{primary_key}"
          end

          # Oh well. Just convert it to a string.
          obj.to_s
        end

        def normalize_value(value)
          value
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
phlexi-display-0.0.12 lib/phlexi/display/components/association.rb
phlexi-display-0.0.11 lib/phlexi/display/components/association.rb
phlexi-display-0.0.10 lib/phlexi/display/components/association.rb
phlexi-display-0.0.9 lib/phlexi/display/components/association.rb
phlexi-display-0.0.8 lib/phlexi/display/components/association.rb
phlexi-display-0.0.7 lib/phlexi/display/components/association.rb
phlexi-display-0.0.6 lib/phlexi/display/components/association.rb
phlexi-display-0.0.5 lib/phlexi/display/components/association.rb
phlexi-display-0.0.4 lib/phlexi/display/components/association.rb