module NetSuite::Support::Fields::ClassMethods

Public Instance Methods

field(name, klass = nil) click to toggle source
# File lib/netsuite/support/fields.rb, line 22
def field(name, klass = nil)
  name_sym = name.to_sym
  raise "#{name} already defined on #{self.name}" if fields.include?(name_sym)
  fields << name_sym
  if klass
    define_method(name_sym) do
      attributes[name_sym] ||= klass.new
    end

    define_method("#{name_sym}=") do |value|
      if value.nil?
        attributes.delete(name_sym)
      else
        attributes[name_sym] = value.kind_of?(klass) ? value : klass.new(value)
      end
    end
  else
    define_method(name_sym) do
      attributes[name_sym]
    end

    define_method("#{name_sym}=") do |value|
      attributes[name_sym] = value
    end
  end
end
fields(*args) click to toggle source
# File lib/netsuite/support/fields.rb, line 12
def fields(*args)
  if args.empty?
     @fields ||= Set.new
  else
    args.each do |arg|
      field arg
    end
  end
end
read_only_field(name) click to toggle source
# File lib/netsuite/support/fields.rb, line 59
def read_only_field(name)
  name_sym = name.to_sym
  read_only_fields << name_sym
  field name
end
read_only_fields(*args) click to toggle source
# File lib/netsuite/support/fields.rb, line 49
def read_only_fields(*args)
  if args.empty?
     @read_only_fields ||= Set.new
  else
    args.each do |arg|
      read_only_field arg
    end
  end
end
search_only_field(name) click to toggle source
# File lib/netsuite/support/fields.rb, line 75
def search_only_field(name)
  name_sym = name.to_sym
  search_only_fields << name_sym
  field name
end
search_only_fields(*args) click to toggle source
# File lib/netsuite/support/fields.rb, line 65
def search_only_fields(*args)
  if args.empty?
     @search_only_fields ||= Set.new
  else
    args.each do |arg|
      search_only_field arg
    end
  end
end