search_value = (b = Brand.where(cn_name: search_value).first).present? ? b.name : search_value if search_value.present?
用 || + try() 吧……
||
try()
#1 楼 @Kabie 可以直接帮把上面这个给改成您的写法吗
if search_value search_value = Brand.where(cn_name: search_value).first.try(:name) || search_value end
我建议你最好在赋值的时候给 search_value 换个名字,这样写可读性很差还容易出错。
search_value
整理一下业务逻辑再写代码吧 value = value if value.present? 这不是废话么
value = value if value.present?
中了 present 的毒。。。
#4 楼 @dddd1919 我没有说清楚,是这样,如果对像存在则把对像中的 name 传给 value,对像不存在则 value 还是原来的值,
变量 = Model.find_by_cn_name(value) ? 对像.name : value if value
#5 楼 @debugger 我就是,我以后不用这个了,直接 IF
#3 楼 @raven 是这样的,以后我也这种写法了,谢谢
你新改过的逻辑的通常写法是用||=
||=
foo ||= Brand.find_by :cn_name, value