使用Rails中的Devise创建虚拟属性4

时间:2013-09-29 17:26:23

标签: ruby-on-rails ruby devise ruby-on-rails-4 virtual-attribute

我的用户模型没有:name字段,但我希望在我的注册表单中包含:name字段,该字段将用于在{{1}中创建另一个模型的记录}}

after_create

如何从注册表单中获取名称?

2 个答案:

答案 0 :(得分:4)

在你的模型中添加attr_accessor作为名称

attr_accessor :name

这将允许您将其添加到表单并使用它在after_create中生成正确的数据

答案 1 :(得分:2)

就像@trh说你可以使用attr_accessor一样,但如果你需要让它做一些逻辑,你需要在attr_accessor上配置getter和/或setter方法。

class User < ActiveRecord::Base
  attr_accessor :name
  after_create :create_thing

  def name
    #if need be do something to get the name 
    "#{self.first_name} #{self.last_name}"
  end

  def name=(value)
    #if need be do something to set the name 
    names = value.split
    @first_name = names[0]
    @last_name = names[1]
  end

  private
  def create_thing
    @thing = Thing.new
    @thing.name = self.name
    @thing.save!
  end
end