这里可以考虑使用 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 生日快乐
努力学习、寻找第一份编程工作中~