Module: BelongsToHstore::Association::ClassMethods

Defined in:
lib/belongs_to_hstore/association.rb

Instance Method Summary collapse

Instance Method Details

#belongs_to_hstore(store_attribute, name, options = {}) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/belongs_to_hstore/association.rb', line 12

def belongs_to_hstore(store_attribute, name, options={})

  self.belongs_to_hstore_attributes = self.belongs_to_hstore_attributes.dup

  key = options[:foreign_key] || "#{name}_id"
  key_type = key.gsub(/_id$/, '_type')

  store_accessor store_attribute, key.to_s
  self.belongs_to_hstore_attributes[key.to_s]= Integer

  if options[:polymorphic]
    store_accessor store_attribute, key_type
    self.belongs_to_hstore_attributes[key_type]= String
  end

  belongs_to name, options

  define_singleton_method("where_#{store_attribute}") do |options|
    where_hstore(store_attribute, options)
  end
end