2015-10-06 97 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

感謝您的支持^ _^ –