class Ki::Model

Attributes

action[RW]
params[RW]
req[RW]
result[RW]
status[RW]

Public Class Methods

new(req) click to toggle source
# File lib/ki/model.rb, line 16
def initialize(req)
  @req = req
  @action = req.to_action
  @params = req.params
  @status = 200

  raise ForbiddenAction if forbidden_actions.include? @action

  ccall
end

Public Instance Methods

create() click to toggle source
# File lib/ki/model.rb, line 31
def create
  check_for_required_attributes
  check_for_unique_attributes
  @result = self.class.create @params
end
delete() click to toggle source
# File lib/ki/model.rb, line 43
def delete
  @result = self.class.delete @params
end
find() click to toggle source
# File lib/ki/model.rb, line 27
def find
  @result = self.class.find @params
end
update() click to toggle source
# File lib/ki/model.rb, line 37
def update
  check_for_required_attributes
  check_for_unique_attributes
  @result = self.class.update @params
end

Private Instance Methods

ccall() click to toggle source
# File lib/ki/model.rb, line 64
def ccall
  before_all
  send "before_#{@action}".to_sym
  send @action.to_sym
  send "after_#{@action}".to_sym
  after_all
end
check_for_required_attributes() click to toggle source
# File lib/ki/model.rb, line 49
def check_for_required_attributes
  required_attributes.each do |ra|
    unless @params.keys.include?(ra.to_s)
      raise RequiredAttributeMissing, "#{ra} missing"
    end
  end
end
check_for_unique_attributes() click to toggle source
# File lib/ki/model.rb, line 57
def check_for_unique_attributes
  unique_attributes.each do |ua|
    u = self.class.find({ ua.to_s => @params[ua.to_s] })
    raise AttributeNotUnique, "#{ua} not unique" unless u.empty?
  end
end