检查嵌套模型属性是否为true

时间:2012-07-12 18:36:20

标签: ruby-on-rails-3

所以我有一个名为Project的模型,其中有一个名为Proposal的嵌套模型(因此每个项目都有多个提案,每个提案只属于一个项目)。

我有一个名为“胜利”的提案专栏,只是检查其中一个提案是否已赢得该项目。我想在项目的Show页面上引用它,但有点困惑的代码。

我真正想做的是检查任何提案是否具有“获胜”状态

这就是我正在尝试的项目显示视图,但它不起作用:

<% if @project.proposals.winning %>
   SUCCESSFUL
<% end %>

我觉得这应该是非常简陋的,但我很难搞清楚,谢谢!

3 个答案:

答案 0 :(得分:1)

改为使用它:

<% if @idea.proposals.count{|a| a.winning } > 0 %>

甚至更好地在Idea模型中为它​​创建一个方法:

def has_winning?
  proposals.count{|a| a.winning } > 0
end

答案 1 :(得分:1)

这是理想的候选人:

<% if @idea.proposals.any? {|proposal| proposal.winning? } %>
如果对于任何数组元素,块返回true,则

Enumerable.any?返回true。

答案 2 :(得分:0)

好的,在另一篇文章中找到了这个代码并且它似乎正在运行,但不确定它是否是最佳方式:

<% if @idea.proposals.map(&:winning).flatten %>