Module: Skyline::HasManyReferablesIn::ClassMethods

Defined in:
lib/skyline/has_many_referables_in.rb

Instance Method Summary collapse

Instance Method Details

#has_many_referables_in(*fields) ⇒ Object

Make one or more fields/columns have support for referable content in HTML.

Overwrites the models accessors for the specified fields/columns. It also adds extra options to the reader. The reader accepts two parameters: ‘edit` (Boolean) and an options string which is passed to InlineRef#convert



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/skyline/has_many_referables_in.rb', line 45

def has_many_referables_in(*fields)      
  self.referable_fields ||= []
  
  fields.each do |f|
    self.referable_fields << f
    
    self.class_eval "      def \#{f}=(body)\n        self.referable_field_bodies[:\#{f}] = body            \n      end\n      def \#{f}_before_typecast\n        self.referable_field_bodies[:\#{f}] || self[:\#{f}]\n      end\n      def \#{f}(edit = false, options={})\n        options.reverse_merge! :nullify => false\n        ret = self.referable_field_bodies[:\#{f}].nil? ? Skyline::InlineRef.convert(self,:\#{f},edit,options) : self.referable_field_bodies[:\#{f}]\n      end\n    END\n  end\nend\n"