循环访问数据库取决于属性



我需要遍历一个数据库表,其中的条件将发生变化:

<%# if @story.category == 5 %>
<% @users.where(generalLabour: 1).find_each do |user| %>
<% else %>
<% @users.each do |user| %>
.... Iterate and display data.....

所以我需要做这样的事情,不幸的是这似乎不起作用,因为我无法将这样的语句与 else 语句一起运行

我还需要进行整数比较:

<% @users.where(starttime: > 12 ).find_each do |user| %>

我怎么做这样的事情?

也许我应该用Javascript而不是rails来做这一切?

试试这个

query= ""
if @story.category == 5
   query = "generalLabour = 1"
elsif @story.category == 4
   query = "generalLabour = 2"
elsif @story.category == 6
   query = "generalLabour = 3"
end
@users.where(query).each do |user|
   .........
end
query= ""
if @story.category == 5
  query = "SaturdayS <= #{story.startTime}"
elsif @story.category == 4
  query = "SaturdayE >= #{story.endTime}"
end
@users.where(query).each do |user|
 .........
end

您可以将哈希与映射一起使用:

x = { 5 => 1, 4 => 2, 6 => 3 }[@story.category]

或者用例语句(这是 switch 的 ruby 版本(:

x = case(@story.category)
when 5
  3
when 4
  2 
when 6
  3
else
  raise "Doh! I did not think of this."
end

但很可能你只是做错了。在应用程序中对 ID 进行硬编码不是一个好的解决方案,您应该通过设置适当的关联并通过它获取相关项来解决此问题。

最新更新