Module: Pinky::Associations

Defined in:
lib/pinky/associations.rb

Instance Method Summary collapse

Instance Method Details

#has_one(klass, opts = {}) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
# File 'lib/pinky/associations.rb', line 3

def has_one klass, opts = {}
  klass_name = klass.name.split('::').last.downcase
  find_by          = opts[:lookup_by] || "#{klass_name}_id"
  association_name = opts[:as] || klass_name
  define_method association_name do
    lookup_value = send(find_by)
    association_model = lookup_value.nil? ? nil : klass.find(:id => lookup_value) rescue nil
    raise NotFoundException.new if association_model.nil? && !opts[:allow_nil]
    association_model
  end
end