如何基于另一个字段初始化字段?

时间:2013-10-08 04:04:15

标签: ruby-on-rails ruby-on-rails-3 mongoid mongoid3

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

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

我使用simple_form来创建用户。 如何根据:user_name初始化:email

2 个答案:

答案 0 :(得分:2)

在你的模特中: -

before_create :add_user_name

private
  def add_user_name
    self.user_name = self.email
  end

答案 1 :(得分:1)

使用默认值:

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

“如果要设置默认值,并依赖于文档   在lambda或proc中的self,self评估文档   实例“。

请参阅:Mongoid fields documentation

使用rails c:

进行测试
u = User.new email: "name@domain.com"
u.user_name # => "email_is: name@domain.com"