• ruby select 方法,可用于先查询结果后,再次用条件限制


    1. 用于条件过滤

    @works=DworkPro.all.order(:work_type)

    @work_pro=@works.select{ |x| x.job_type == 7}

    2. select 和find 的区别

    arr = [1,2,3,4]

      arr.find{|i| i%2 == 0 }
    #=>2
    arr.select{|i| i%2 == 0}
    #=>[2, 4]

    find返回满足条件的第一条记录,而select返回满足条件的全部记录。 要分情况应用不同的方法,否则会产生bug。

    3.  判断指定 字段 是否存在

    login = DLoginMsg.find_by(:id => login_id)

    @task_lines = DLogionTaskLine.where(:d_task_form_id => login.d_task_forms.pluck(:id))
    .select{|x| x.long_login.present? }
    .map { |x|  {  login_name: login.login_name,
          telphone: login.telphone,
          get_time: x.get_time.strftime("%Y-%m-%d %H:%M:%S"),
          long_login: x.long_login,
          lat_login: x.lat_login,
          d_task_form_id: x.d_task_form_id,
          unit_name: SRegionCodeInfo.find(yw_unit_id).unit_name,
          station_name: DTaskForm.find(x.d_task_form_id).present? ? DTaskForm.find(x.d_task_form_id).station_name : '',
          job_no: DTaskForm.find(x.d_task_form_id).job_no,
          title: DTaskForm.find(x.d_task_form_id).title }

       }

    4. 只查询指定的字段

    json.father_region_code SRegionCode.select(:id,:region_name).find_by(:id =>region_code.father_region_id)
     
    返回结果:
    father_region_code":{"id":1,"region_name":"河南"}}}
     
  • 相关阅读:
    Ros学习——Cmakelists.txt文件解读
    Ros学习——Movebase源码解读
    C++——STL之vector, list, deque容器对比与常用函数
    Ros学习——移动机器人Ros导航详解及源码解析
    C++——多线程
    C++——STL容器
    PHP对图片按照一定比例缩放并生成图片文件
    PHP二维数组排序
    PHP裁剪图片并上传完整demo
    [PHP] php实现文件下载
  • 原文地址:https://www.cnblogs.com/lmg-jie/p/8568419.html
Copyright © 2020-2023  润新知