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

Parameters:

  • fields (String, Symbol)

    The field(s) to enable the referable content for.



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/skyline/has_many_referables_in.rb', line 50

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.send(\"\#{f}_will_change!\")\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"