【问题标题】:How do I add blank element to index[0] of an array如何将空白元素添加到数组的索引 [0]
【发布时间】:2016-01-02 20:40:57
【问题描述】:

我有UserRole 模型。

在我的角色表中。

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]

【问题讨论】:

    标签: arrays ruby ruby-on-rails-4


    【解决方案1】:

    您需要将以下部分更新为:

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

    【讨论】:

      【解决方案2】:

      根据枚举的文档,你可以给枚举一个哈希而不是一个数组,所以我认为你可以通过这种方式轻松地构建一个哈希:

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

      这样您就不需要在表格中添加一个空行,并且每个名称都映射到正确的 id。

      【讨论】:

      • 这也不错。感谢您的 +1。但我使用了@illusionist 的答案,这就是我现在需要的。
      【解决方案3】:

      这应该可以解决您的问题。

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

      【讨论】:

        【解决方案4】:
        class User < ActiveRecord::Base
          enum role_id: ([''] + Role.all.map(&:name))
        end
        

        【讨论】:

        • 好像我没有刷新页面; @Zahid 给出了类似的答案;但是差别不大
        • 谢谢,我用了你的回答^_^
        猜你喜欢
        • 2014-11-13
        • 2017-05-26
        • 2012-07-23
        • 1970-01-01
        • 2021-08-19
        • 1970-01-01
        • 1970-01-01
        • 2015-11-21
        相关资源
        最近更新 更多