Module: Recliner::Associations::Has

Defined in:
lib/recliner/associations/has.rb

Instance Method Summary collapse

Instance Method Details

#has(name, options = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/recliner/associations/has.rb', line 7

def has(name, options={})
  property "#{name}_id", Reference
  
  class_eval <<-EOF
    def #{name}(force_reload = false)                                   # def user(force_reload = false)
      reference = send("#{name}_id")                                    #   reference = send("user_id")
                                                                        #   
      if reference                                                      #   if reference
        reference.reload if force_reload                                #     reference.reload if force_reload
        Recliner::Document.with_database(database) { reference.target } #     Recliner::Document.with_database(database) { reference.target }
      end                                                               #   end
    end                                                                 # end
                                                                        # 
    def #{name}=(obj)                                                   # def user=(obj)
      reference = send("#{name}_id")                                    #   reference = send("user_id")
      reference = send("#{name}_id=", Reference.new) unless reference   #   reference = send("user_id=", Reference.new) unless reference
      reference.replace(obj)                                            #   reference.replace(obj)
    end                                                                 # end
  EOF
end