module RailzLite::Associatable

Public Instance Methods

assoc_options() click to toggle source
# File lib/railz_lite/models/associatable.rb, line 72
def assoc_options
  @assoc_options ||= {}
  @assoc_options
end
belongs_to(name, options = {}) click to toggle source
# File lib/railz_lite/models/associatable.rb, line 51
def belongs_to(name, options = {})
  options = BelongsToOptions.new(name, options)
  assoc_options[name] = options
  define_method(name) do
    foreign_key = send(options.foreign_key)
    primary_key = options.primary_key
    params = [[primary_key, foreign_key]].to_h
    options.model_class.where(params).first
  end
end
has_many(name, options = {}) click to toggle source
# File lib/railz_lite/models/associatable.rb, line 62
def has_many(name, options = {})
  options = HasManyOptions.new(name, self.name, options)
  define_method(name) do
    foreign_key = options.foreign_key
    primary_key = send(options.primary_key)
    params = [[foreign_key, primary_key]].to_h
    options.model_class.where(params)
  end
end