class Restforce::Concerns::Picklists::PicklistValues
def controlling_field
def controlling_field @_controlling_field ||= fields.find { |f| f['name'] == field['controllerName'] } end
def controlling_picklist
def controlling_picklist @_controlling_picklist ||= controlling_field['picklistValues']. find do |picklist_entry| picklist_entry['value'] == @valid_for end end
def dependent?
def dependent? !!field['dependentPicklist'] end
def field
def field @_field ||= fields.find { |f| f['name'] == @field } end
def index
def index @_index ||= controlling_field['picklistValues'].index(controlling_picklist) end
def initialize(fields, field, options = {})
def initialize(fields, field, options = {}) @fields = fields @field = field @valid_for = options.delete(:valid_for) raise "#{field} is not a dependent picklist" if @valid_for && !dependent? replace(picklist_values) end
def picklist_values
def picklist_values if valid_for? field['picklistValues'].select { |picklist_entry| valid? picklist_entry } else field['picklistValues'] end end
def valid?(picklist_entry)
See http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_calls_des
Returns true if the picklist entry is valid for the controlling picklist.
def valid?(picklist_entry) valid_for = picklist_entry['validFor'].ljust(16, 'A').unpack('m').first. unpack('C*') (valid_for[index >> 3] & (0x80 >> index % 8)).positive? end
def valid_for?
def valid_for? !!@valid_for end