module BigRecord::FamilySpanColumns::ClassMethods

Public Instance Methods

alias_attribute_with_family_span_columns(alias_name, fully_qualified_name) click to toggle source

Define aliases to the fully qualified attributes

# File lib/big_record/family_span_columns.rb, line 31
def alias_attribute_with_family_span_columns(alias_name, fully_qualified_name)
  # when it's a single column everything's normal but when it's a
  # column family then this actually add accessors for the whole family
  alias_attribute_without_family_span_columns(alias_name, fully_qualified_name)

  # fully_qualified_name ends with ':' => consider it a family span column
  if fully_qualified_name.ends_with?(":")
    # add the accessors for the individual columns
    self.class_eval <<-EOF
      def #{alias_name}(column_key=nil)
        if column_key
          read_attribute("#{fully_qualified_name}\#{column_key}")
        else
          read_family_attributes("#{fully_qualified_name}")
        end
      end
      def set_#{alias_name}(column_key, value)
        write_attribute("#{fully_qualified_name}\#{column_key}", value)
      end
    EOF
  end
end
family_columns() click to toggle source

Returns the list of columns that are spanned on a whole family

# File lib/big_record/family_span_columns.rb, line 26
def family_columns
  columns.select{|c|c.family?}
end
simple_columns() click to toggle source

Returns the list of columns that are not spanned on a whole family

# File lib/big_record/family_span_columns.rb, line 21
def simple_columns
  columns.select{|c|!c.family?}
end