Module: Ns::ControllerServicable

Defined in:
lib/ns_service_pack/controller_servicable.rb

Instance Method Summary collapse

Instance Method Details

#createObject

创建记录



37
38
39
40
41
42
43
44
# File 'lib/ns_service_pack/controller_servicable.rb', line 37

def create
  @_obj = model_class.new_from_buz(params[:data]) 
  if @_obj.save
    render :json=>ResultPacker.data(@_obj, "创建#{model_class.name}##{@_obj.respond_to?(:id) ? @_obj.id : @_obj.object_id}成功!")
  else
    render :json=>ResultPacker.help(valid_errors(model_class.buz_hashize(@_obj.errors.to_hash)))
  end
end

#destroyObject

更新记录 # 在获取时要做过滤判断!! TODO



57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/ns_service_pack/controller_servicable.rb', line 57

def destroy
  @_obj = model_class.find(params[:id])
  if model_class.mapping.keys.include?(:status) && !params.key?(:force_del)
    if @_obj.update_from_buz(:status=>'作废')
      render :json=>ResultPacker.data(@_obj, "该记录已被逻辑删除(状态标记为:作废!)")
    else
      render :json=>ResultPacker.help(valid_errors(model_class.buz_hashize(@_obj.errors.to_hash)))
    end
  else
    @_obj.destroy
    render :json=>ResultPacker.data(@_obj, "警告:资源(#{model_class.name}##{@_obj.respond_to?(:id) ? @_obj.id : @_obj.object_id})已被物理删除!此资源不具备逻辑删除条件具有status业务属性或被内部强制删除!")
  end
end

#get_page_data(start = 0, size = 10, params = {}) ⇒ Object

return [total_count, page_data] 可在子类中覆盖定制



13
14
15
16
17
18
19
20
21
22
# File 'lib/ns_service_pack/controller_servicable.rb', line 13

def get_page_data(start = 0, size = 10, params = {})
  where_conds = @conds.present? ? @conds : model_class.arrayify_conds(params)
  logger.debug "====>conds: #{where_conds.inspect}"
  conds = {:conditions=>where_conds}
  total_count = model_class.count(conds)
  page_params = conds.merge!(:select=>model_class.select_fields(params[:select]), 
                             :offset=>start, :limit=>size, :order=>params[:order])
  page_data = model_class.all(page_params)
  [total_count, page_data]
end

#indexObject



4
5
6
7
8
9
# File 'lib/ns_service_pack/controller_servicable.rb', line 4

def index
  @result = model_class.paginate(params) do |start, page_size|
    get_page_data(start, page_size, params)
  end
  render :json=>ResultPacker.data(@result.as_json)
end

#newObject

get a new buz obj with db default value



25
26
27
28
# File 'lib/ns_service_pack/controller_servicable.rb', line 25

def new
  @_data = model_class.buz_hashize
  render :json=>ResultPacker.data(model_class.name.underscore.to_sym=>@_data)
end

#showObject

查找单条记录



31
32
33
34
# File 'lib/ns_service_pack/controller_servicable.rb', line 31

def show
  @_obj = model_class._find_resource(params)
  render :json=>ResultPacker.data(@_obj, "获取#{model_class.name}##{@_obj.respond_to?(:id) ? @_obj.id : @_obj.object_id}成功!")
end

#updateObject

更新记录



47
48
49
50
51
52
53
54
# File 'lib/ns_service_pack/controller_servicable.rb', line 47

def update
  @_obj = model_class.find(params[:id])
  if @_obj.update_from_buz(params[:data])
    render :json=>ResultPacker.data(@_obj, "更新#{model_class.name}##{@_obj.respond_to?(:id) ? @_obj.id : @_obj.object_id}成功!")
  else
    render :json=>ResultPacker.help(valid_errors(model_class.buz_hashize(@_obj.errors.to_hash)))
  end
end