Module: Sequel::Plugins::ColumnConflicts::ClassMethods

Defined in:
lib/sequel/plugins/column_conflicts.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#get_column_conflictsObject (readonly)

Hash for columns where the getter method already exists. keys are column symbols/strings that conflict with method names and should be looked up directly instead of calling a method, values are the column symbol to lookup in the values hash.



53
54
55
# File 'lib/sequel/plugins/column_conflicts.rb', line 53

def get_column_conflicts
  @get_column_conflicts
end

#set_column_conflictsObject (readonly)

Hash for columns where the setter method already exists. keys are column symbols/strings suffixed with = that conflict with method names and should be set directly in the values hash, values are the column symbol to set in the values hash.



58
59
60
# File 'lib/sequel/plugins/column_conflicts.rb', line 58

def set_column_conflicts
  @set_column_conflicts
end

Instance Method Details

#check_column_conflictsObject

Compare the column names for the model with the methods defined on Sequel::Model, and automatically setup the column conflicts.



62
63
64
65
66
# File 'lib/sequel/plugins/column_conflicts.rb', line 62

def check_column_conflicts
  mod = Sequel::Model
  columns.find_all{|c| mod.method_defined?(c)}.each{|c| get_column_conflict!(c)}
  columns.find_all{|c| mod.method_defined?("#{c}=")}.each{|c| set_column_conflict!(c)}
end

#freezeObject

Freeze column conflict information when freezing model class.



69
70
71
72
73
74
# File 'lib/sequel/plugins/column_conflicts.rb', line 69

def freeze
  @get_column_conflicts.freeze
  @set_column_conflicts.freeze

  super
end

#get_column_conflict!(column) ⇒ Object

Set the given column as one with a getter method conflict.



77
78
79
# File 'lib/sequel/plugins/column_conflicts.rb', line 77

def get_column_conflict!(column)
  @get_column_conflicts[column.to_sym] = @get_column_conflicts[column.to_s] = column.to_sym
end

#set_column_conflict!(column) ⇒ Object

Set the given column as one with a setter method conflict.



82
83
84
# File 'lib/sequel/plugins/column_conflicts.rb', line 82

def set_column_conflict!(column)
  @set_column_conflicts[:"#{column}="] = @set_column_conflicts["#{column}="] = column.to_sym
end