我在我的应用中列出模型,以便管理员可以创建自定义角色:
<% ActiveRecord::Base.send(:subclasses).each do |model| %>
<tr>
<td width=10>
<label><%= check_box_tag "role[read_models][]", model.name, @role.read_models.include?(model.name) %></label><br />
</td>
<td width=10>
<label><%= check_box_tag "role[write_models][]", model.name, @role.write_models.include?(model.name) %></label><br />
</td>
<td><%= model.name %></td>
</tr>
<% end -%>
顺便说一下,这很棒。在日志中它正确保存数组:
"read_models"=>["Slug", "Account", "Category", "Document", "Group", "Location", "Role", "Status", "Task", "Ticket"]
但是在输出结果时:
<%= @role.read_models.each do |model| %>
<%= model %><br />
<% end -%>
我明白了:
---
- Slug
- Account
- Category
- Document
- Group
- Location
- Role
- Status
- Task
- Ticket
(包括前面的三个破折号)
我已经尝试过to_a.join(','),但它仍然在每个前面都有破折号。
有关如何更改此流程的任何想法?谢谢!
答案 0 :(得分:0)
我猜你有一个角色类,这个类是用来存储这些值的类,如果是这种情况,这就是你可以做的:
class Role < ActiveRecord::Base
serialize :read_models, Array
end
这将使ActiveRecord将您在read_models列中拥有的这些值存储为YAML表示(这是您已经拥有的)但是然后您使 @ role.read_models 您将获得该数组而不是包含YAML表示的字符串。