• 这里可以考虑使用 before_action,尝试修改如下:

    before_action :render_fail, only: :show
    
    def show
      render status: 200, json: { success: true, msg: :ok }
    end
    
    private
    
    def render_fail
      msg = if !condition_A
        'msg a'
      elsif !condition_B
        'msg b'
      elsif !condition_C
        'msg c'
      end
    
      render status: 400, json: { success: false, msg: msg } if msg
    end
    
  • 写得好,学习了 👍

    tags = tags.map(&:preferred_or_self)
    tags = tags.group_by do |tag|
      tag.name.downcase.gsub(/-\s/, "")
    end.map { |name, records| records.sort_by { |record| record.preferred_id || 0 }[0] }
    tags.flatten.uniq[0, 3]
    

    想讨论下这一小段代码,第一眼看上去不是那么好读,想了下要怎么优化,尝试修改如下:

    tags.map(&:preferred_or_self)
        .group_by(&method(:clean_name))
        .values
        .flat_map(&method(:min_by_preferred_id))
        .uniq[0, 3]
    
    private
    
    def clean_name(tag)
      tag.name.downcase.gsub(/-\s/, "")
    end
    
    def min_by_preferred_id(tags)
      tags.min_by { |tag| tag.preferred_id || 0 }
    end
    

    不知道有没有更好的写法

  • Ruby 25 岁生日 #ruby25 at February 24, 2018

    Ruby 生日快乐🎉

    努力学习、寻找第一份编程工作中~