2015-10-06 94 views
1

我有UserRole模型。如何添加空白元素到索引[0]的数组

我在角色表中有。

ID  name 
1  admin 
2  normal_user 
3  guest 

在用户表中我有role_id

我使用枚举到我的用户,我试过这个。

class User < ActiveRecord::Base 
    enum role_id: (Role.all).map {|k,v| k[:name]} 
end 

这个问题是0 => admin,1 => normal_user,2 => guest,而不是ID。我该如何解决这个问题?我正在考虑添加空白元素索引[0]。

这样的事情。

enum role_id: ["", :admin, :normal_user, :guest]

回答

2
class User < ActiveRecord::Base 
    enum role_id: ([''] + Role.all.map(&:name)) 
end 
+0

看起来我没有刷新页面; @Zahid给出了类似的答案;然而有一点差异 – illusionist

+1

谢谢,我用你的答案^ _ ^ –

0

你需要下面的部分,以更新此:

enum_role_id: (Role.all).map {|k,v| k[:name]}.insert(0,"") 
1

据,枚举的文档,你可以给枚举,而不是数组中的哈希,所以我认为你可以很容易地建立使用这种方法:

enum role_id: (Role.all).each_with_object({}) do |row, hash| 
    hash[row[:name]] = row[:id] 
end 

这样你就不需要向表中添加一个空行,并且每个名称映射到正确的ID。

+0

这是很好也。感谢您的+1。但我用@ illusionist的答案,这就是我现在需要的。 –

2

这应该解决您的问题。

enum role_id: [''] + Role.all.map {|k,v| k[:name]} 
+0

感谢您的支持^ _^ –