检查属性是否存在并设置的最佳方法是什么?

时间:2013-10-06 18:10:12

标签: ruby-on-rails ruby haml

我有一个共同的视图,列出了两个不同的模型。唯一的区别是,在设置link_to操作时,其中一个模型具有link属性而另一个不具有link属性。我想检查%li - if @element.has_attribute?("link") && @element.link = link_to @element.title, @element.link - else = link_to @element.title, @element 属性是否存在,如果存在,请检查它是否已设置。我有以下工作,但我想知道是否有更好的方法。

{{1}}

3 个答案:

答案 0 :(得分:31)

您可以使用presence

= link_to @element.title, (@element.link.presence || @element)

或者,如果@element可能根本没有link,您可以使用try

= link_to @element.title, (@element.try(:link) || @element)

答案 1 :(得分:14)

我相信你可以做@element.attribute?(例如@element.link?) (我想我们可以把它称为“魔法属性”。)

检查

  • 模型上存在的属性
  • 值不是nil

正是你想要的。

答案 2 :(得分:7)

尝试使用属性哈希。此哈希将返回所有activerecord对象属性的key => value映射。

if @element.attributes['link']
  # Here we are
else
  # default
end