Module: Skyline::Referable::ClassMethods

Defined in:
lib/skyline/referable.rb

Instance Method Summary collapse

Instance Method Details

#referable_field(*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.



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/skyline/referable.rb', line 40

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