好的,我正在尝试执行以下操作,我知道如何在PHP中执行此操作,而不是在Ruby on Rails中执行此操作:
SELECT * FROM calls WHERE (status = 'open') OR (status = 'pending')
只需在调用表中查看数据库中的打开或挂起状态。
我想在Rails中这样做。目前我在我的控制器中有这个:
class CallsController < ApplicationController
def index
@calls = Call.all
end
end
这是我的观点:
<table>
<% @cals.each do |call| %>
<tr>
<th><%= link_to call.id, call_path(call) %></th>
<th><%= call.cname %></th>
<th><%= call.cbn %></th>
<th><%= call.email %></th>
<th><%= call.operator %></th>
<th><%= call.reason %></th>
<th><%= call.ticket %></th>
<th><%= call.created_at %></th>
<th><%= call.tier %></th>
<th><%= call.status %></th>
<th><%= link_to 'Edit', edit_call_path(call) %></th>
<th><%= link_to 'Remove', call_path(call), method: :delete, data: { confirm: 'Are you sure?' } %></th>
</tr>
<% end %>
</table>
答案 0 :(得分:2)
试试这个:
def index
@calls = Call.where(status: ['open', 'pending'])
end
确保这些where
次呼叫不会泄漏到您的控制器中是一种良好做法,因为它们会暴露Call
的许多内部因素。您可以在Call
类中定义范围:
class Call < ActiveRecord::Base
scope :open_or_pending, -> { where(status: ['open', 'pending']) }
end
然后在你的控制器中使用它:
def index
@calls = Call.open_or_pending
end
请注意,现在,控制器不需要知道Call
有一个status
字段,以及它的值是什么。