module Blackbeard::StorableHasSet::ClassMethods

Public Instance Methods

_has_set(plural, singular) click to toggle source
# File lib/blackbeard/storable_has_set.rb, line 19
      def _has_set(plural, singular)
        plural = plural.to_s.downcase
        singular = singular.to_s.downcase

        methods = <<-END_OF_RUBY

            def has_#{singular}?(o)
              #{plural}.include?(o)
            end

            def add_#{singular}(o)
              db.set_add_member(#{plural}_key, o) unless has_#{singular}?(o)
              \@#{plural} = nil
            end

            def add_#{plural}(*args)
              args.flatten.reject!{|o| has_#{singular}?(o) }
              db.set_add_members(#{plural}_key, args) unless args.empty?
              \@#{plural} = nil
            end

            def remove_#{singular}(o)
              db.set_remove_member(#{plural}_key, o)
              \@#{plural} = nil
            end

            def #{plural}
              \@#{plural} ||= db.set_members(#{plural}_key)
            end

            def #{plural}_key
              raise StorableNotSaved if new_record?
              key+"::#{plural}"
            end

        END_OF_RUBY

        class_eval(methods)
      end
has_set(options = {}) click to toggle source
# File lib/blackbeard/storable_has_set.rb, line 13
def has_set(options = {})
  options.each_pair do |plural, singular|
    _has_set(plural, singular)
  end
end