代码之家  ›  专栏  ›  技术社区  ›  Matt

如何在ror中生成唯一的匿名用户名?

  •  2
  • Matt  · 技术社区  · 17 年前

    我想在创建我的用户模型实例时生成唯一的匿名用户名。理想情况下,如果我不指定任何用户名,它将被默认设置。

    例如,当我执行user.create时!()我希望将用户名列设置为“Anonymous123”,其中123是从序列中提取的唯一数字(该实例的ID列的值可以)。

    3 回复  |  直到 17 年前
        1
  •  7
  •   Peer Allan    17 年前

    把几个答案中的例子结合起来就可以了。

    class User < ActiveRecord::Base
      before_create :set_anonymous_username
    
      def set_anonymous_username
        username = "anonymous#{User.last.id + 1}" if username.nil?
      end
    end
    

    我在这里创建之前使用过,因为我希望您在第一次创建用户之前只需要设置一个匿名用户名。每次保存模型时都会调用before-save,这可能是不必要的开销,但两者都可以工作。

        2
  •  0
  •   workmad3    17 年前

    使用before_save filter在保存模型之前设置用户名,例如

    class User < ActiveRecord::Base
      before_save :set_anonymous_username
    
      def set_anonymous_username
        username = "anonymous" + User.find_by_sql("SELECT max(id) FROM users").maxid.to_s if username.nil?
      end
    end 
    
        3
  •  0
  •   zackola    17 年前

    类似的东西

    class User < ActiveRecord::Base
      def initialize
        super
        self.username = "anonymous#{User.last.id + 1}"
      end
    end
    

    当您创建一个新的用户实例时,即使在保存之前也会这样做-以防您希望在视图预创建中使用它。您可能希望将其与上述保存之前的内容结合起来,以便在创建记录时获得数据库中的最后一个确定ID。