Rails 关于 super 在 ActiveRecord 中的使用

hxh1246996371 · 2015年09月23日 · 最后由 gonglexin 回复于 2015年09月25日 · 1999 次阅读

我经常会在项目中遇到这种情况,如果某个字段为空则取一个固定的值:

然后我就有了下面的写法

class ApmSellMem < ActiveRecord::Base
  def avartar
      super || "'http://XXX/default.png'}"
  end
end

以上写法是能够正常工作的,但是貌似与 super 的意思不咋符合,有点歪打正着的感觉,请问这种写法没问题吗?还有更好的写法吗

def avatar
  read_attribute(:avatar) || "'http://XXX/default.png'}"
end

只有我觉得这里 super 用得没错么

@msg7086 是的,只有你 😄

"'http://XXX/default.png'}"不属于 Model,属于 View,因此,写到 helpers 里更合适,或者使用 decoretors,如draper.

#5 楼 @yanhao 涨姿势了 竟然还有 view model

self[:avatar] || "'http://XXX/default.png'}"
需要 登录 后方可回复, 如果你还没有账号请 注册新账号