class Databound::Data
Public Class Methods
new(controller, json, model)
click to toggle source
# File lib/databound/data.rb, line 3 def initialize(controller, json, model) return unless json @controller = controller @json = json @data = interpolated_params @model = model end
Public Instance Methods
records()
click to toggle source
# File lib/databound/data.rb, line 12 def records @model.where(@data) end
to_h()
click to toggle source
# File lib/databound/data.rb, line 16 def to_h @data || {} end
Private Instance Methods
check_strict!(key, val)
click to toggle source
# File lib/databound/data.rb, line 45 def check_strict!(key, val) return unless dsl_key(key) return unless strict?(key) and !dsl_block(key, val) raise NotPermittedError, "DSL column '#{key}' received unmatched string '#{val}'." \ " Use 'strict: false' in DSL definition to allow everything." end
dsl_block(key, val)
click to toggle source
# File lib/databound/data.rb, line 37 def dsl_block(key, val) swallow_nil { dsl_key(key)[val.to_s] } end
dsl_key(key)
click to toggle source
# File lib/databound/data.rb, line 41 def dsl_key(key) swallow_nil { @controller.databound_config.read(:dsls)[key] } end
interpolated_params()
click to toggle source
# File lib/databound/data.rb, line 28 def interpolated_params params.to_h.each_with_object({}) do |(key, val), obj| check_strict!(key, val) block = dsl_block(key, val) obj[key] = block ? @controller.instance_exec(params, &block) : val end end
params()
click to toggle source
# File lib/databound/data.rb, line 22 def params @params ||= JSON.parse(@json) if @json.is_a?(String) @params ||= @json if @json.is_a?(Hash) OpenStruct.new(@params) end
strict?(key)
click to toggle source
# File lib/databound/data.rb, line 53 def strict?(key) swallow_nil { @controller.databound_config.read(:stricts)[key] } end