rails activerecords查询,行拆分

时间:2015-06-22 07:57:54

标签: mysql ruby-on-rails activerecord

我有一些像这样的记录

"boss/supervisor/employee"
"boss"
"boss/supervisor"

我想把所有这些记录都放在一个选择输入而不重复自己......这就是我已经做过的事情

在我的索引中我这样做了:

@jerarquy = Jerarquy.uniq.pluck(:name)

所以当我从列jerarquy获取所有记录时:

<select>
    <% @jerarquy.each do |jer| %>
        <% jer.split('/').each do |j| %>
            <option><%= j %></option>
        <% end %>
    <% end %>
</select>

我从数据库中获取数据,但我想我必须在我的控制器中更改某些内容,以便按照我想要的顺序获取我想要的信息,例如,如果我选择一个我想要获得的主管/主管/员工,但如果我选择一名员工,我只想找一名员工

1 个答案:

答案 0 :(得分:1)

这是使用flatten将字段转换为单个数组然后使用.uniq

的方法
ary = ["boss/supervisor/employee", "boss", "boss/supervisor"]
ary.map { |string| string.split('/') }.flatten.uniq
=> ["boss", "supervisor", "employee"]
@jerarquy = Jerarquy.uniq.pluck(:name).map { |string| string.split('/') }.flatten.uniq

<select>
    <% @jerarquy.each do |jer| %>        
      <option><%= j %></option>
    <% end %>
</select>

但是我会说这段代码表明底层设计不佳。 您应该让数据库处理拉出唯一记录。