Rails:如果记录存在则使用此记录

时间:2013-06-19 06:13:00

标签: ruby-on-rails ruby-on-rails-3

如何在Rails中使用if条件的结果?类似的东西:

if @edits.where(:article_id => a.id).first
  THIS.body.html_safe
else
  a.body.html_safe
end

我如何获取该条件的结果?那是 THIS 记录?

谢谢!

4 个答案:

答案 0 :(得分:2)

您可以在if声明中进行作业。

if edit = @edits.where(:article_id => a.id).first
  edit.body.html_safe
else
  a.body.html_safe
end

答案 1 :(得分:1)

你可以写一行:

(@edits.where(:article_id => a.id).first || a).body.html_safe

答案 2 :(得分:1)

将这样的逻辑放在视野或助手中是非常难看的。判断这些并不是View的工作。

更好的选择:

# Article model
def default_edit
  edits.first
end

# Articles Controller
def show
  article = Article.find(params[:article])
  @article = article.default_edit || article
end

# view: no need to do anything, just plain obj
<%= @article.body %>

答案 3 :(得分:0)

您可以使用find_byfind_by_*来避免讨厌的.where().first

if edit = Edit.find_by(article_id: article.id)
  edit.body.html_safe
else
  article.body.html_safe
end