Module: ModelSubsets

Extended by:
ActiveSupport::Concern
Defined in:
lib/model_subsets.rb,
lib/model_subsets/version.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

VERSION =
"0.0.11"

Instance Method Summary collapse

Instance Method Details

#fieldsetsArray

Return current subset fieldsets list

Returns:

  • (Array)

Since:

  • 0.0.2



12
13
14
# File 'lib/model_subsets.rb', line 12

def fieldsets
  subset_content[:fieldsets] if valid_subset?
end

#has_fieldset?(name) ⇒ Boolean

Whether subset includes a fieldset

Examples:

Check if a user has fieldset :common

user.has_fieldset? :common

Parameters:

  • name (Symbol)

    The fieldset name

Returns:

  • (Boolean)

Since:

  • 0.0.2



26
27
28
# File 'lib/model_subsets.rb', line 26

def has_fieldset? name
  fieldsets.include?(name) if valid_subset?
end

#in_subsets_scope?(name) ⇒ Boolean

Whether subset is included in a subsets scope

Examples:

Check if current subset is in :users subsets scope

person.in_subset_scope? :users

Parameters:

  • name (Symbol)

    The subsets scope name

Returns:

  • (Boolean)

Since:

  • 0.0.4



40
41
42
# File 'lib/model_subsets.rb', line 40

def in_subsets_scope? name
  self.class.subsets_scope(name).include? subset.to_sym
end

#subset_contentHash

Returns current subset content An empty Hash is returned if subset is not defined

Returns:

  • (Hash)

Since:

  • 0.0.2



50
51
52
# File 'lib/model_subsets.rb', line 50

def subset_content
  self.class.subsets[subset.to_sym] if valid_subset? 
end

#subset_field?(name) ⇒ Boolean

Whether a subset fieldset includes a field It only checks if the field is included in current subset fieldsets, not if the field is a column in the model

Examples:

Check if a user uses field :name

user.has_field? :name

Parameters:

  • name (Symbol)

    The field name

Returns:

  • (Boolean)

Since:

  • 0.0.2



65
66
67
# File 'lib/model_subsets.rb', line 65

def subset_field? name
  subset_fields.include?(name) if subset_fields
end

#subset_fieldsArray

Return current subset fields list

Returns:

  • (Array)

Since:

  • 0.0.2



74
75
76
# File 'lib/model_subsets.rb', line 74

def subset_fields
  self.class.subset_fields(subset.to_sym) if valid_subset?
end

#valid_subset?Boolean

Whether current subset id is defined

Examples:

Use valid_subset? as a model validation

validate :valid_subset?

Returns:

  • (Boolean)

Since:

  • 0.0.2



86
87
88
89
90
# File 'lib/model_subsets.rb', line 86

def valid_subset?
  return true if self.class.subsets.keys.include?(subset.to_s.to_sym)
  errors.add(:subset, :invalid) if respond_to?(:errors)
  false
end