module Ns::ControllerServicable
Public Instance Methods
create()
click to toggle source
创建记录
# 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
destroy()
click to toggle source
更新记录 # 在获取时要做过滤判断!! TODO
# 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 = {})
click to toggle source
return [total_count, page_data] 可在子类中覆盖定制
# 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
index()
click to toggle source
# 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
new()
click to toggle source
get a new buz obj with db default value
# 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
show()
click to toggle source
查找单条记录
# 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
update()
click to toggle source
更新记录
# 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
Protected Instance Methods
valid_errors(error_hash = {})
click to toggle source
验证错误回传
# File lib/ns_service_pack/controller_servicable.rb, line 73 def valid_errors(error_hash = {}) (error_hash||{}).each{|k, v| error_hash[k] = v.join(', ') if v.is_a? Array } end