Ruby on rails 条件句和重写

Ruby on rails 条件句和重写,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我使用一个条件来检查是否存在两个值。我想用第二个条件覆盖第一个条件。最有可能的是,如果第二个存在,那么第一个就会存在,如果这是有意义的话。我遇到的问题不是使用两种不同的调用方法 到目前为止,我所拥有的: <% @data.each do |i| %> <% if i.stock.present? %> In Stock <% elsif i.sold.present? %> Sold <% else %> n/a

我使用一个条件来检查是否存在两个值。我想用第二个条件覆盖第一个条件。最有可能的是,如果第二个存在,那么第一个就会存在,如果这是有意义的话。我遇到的问题不是使用两种不同的调用方法

到目前为止,我所拥有的:

<% @data.each do |i| %>
  <% if i.stock.present? %>
    In Stock
  <% elsif i.sold.present? %>
    Sold
  <% else %>
    n/a
 <% end %>
<% end %>

有现货的
出售
不适用

因此,如果库存显示为“库存”,如果售出显示为“售出”。

我想我有一个解决方案,但请随时告诉我是否有更好的方法。这是使用除非语句,似乎显示了我需要的内容

<% @data.each do |i| %>
  <% unless i.stock.present? %>
    In Stock
  <% else if i.sold.present? %>
      Sold
    <% else %>
      n/a
  <% end %>
 <% end %>
<% end %>

有现货的
出售
不适用

这就是TDD很重要的原因。在每个示例中,您希望得到什么样的输出?问题是什么?当您说“用第二个条件覆盖第一个条件”时,我假设您说的
I.stock.present?
总是正确的?股票是整数吗?如果是这样,在0上调用
present?
将返回
true
。我的意思是,如果第一个条件为true,则显示库存中的消息,但如果第二个条件存在,则显示已售出。如果不存在,则不显示任何内容。但如果第二个条件存在,那么第一个条件总是存在的,这就是我面临的问题。此时,如果两者都存在,则同时显示库存和售出信息。“此时,如果两者都存在,则同时显示库存和售出信息”。你确定吗?或者,它显示两者是因为您在
@data
中循环,其中包含既有库存又已售出的项目?