1

我有一个带有:emailand的用户模型:user_name,我想:user_name用 的一部分自动初始化:email

class User
  include Mongoid::Document
  field :email
  field :user_name
end

我使用 simple_form 创建用户。我怎样才能初始化:user_name基于:email

4

2 回答 2

2

在您的模型中:-

before_create :add_user_name

private
  def add_user_name
    self.user_name = self.email
  end
于 2013-10-08T07:08:45.777 回答
1

默认情况下使用:

class User
 include Mongoid::Document
 field :email, type: String
 field :user_name, default: ->{ "email_is: #{email}" }
end

“如果您想设置依赖于文档状态的默认值,则 lambda 或 proc 中的 self 将评估为文档实例。”

请参阅:Mongoid 字段文档

用rails c测试:

u = User.new email: "name@domain.com"
u.user_name # => "email_is: name@domain.com" 
于 2013-10-08T08:27:34.820 回答