Rails尝试在创建用户后创建配置文件

时间:2015-05-30 03:02:05

标签: ruby-on-rails ruby-on-rails-4 activerecord devise

我试图弄清楚如何为刚刚创建的用户创建新的个人资料,

我在User模型上使用devise,User模型与UserProfile模型有一对一的关系。

这是我的用户模型的样子:

class User < ActiveRecord::Base
  has_and_belongs_to_many :roles
  belongs_to :batch
  has_one :user_profile

  after_create :create_user_profile

  def create_user_profile
    self.user_profile.new(:name => 'username')
  end

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
end

这会产生以下错误:

  

未定义的方法`new&#39;为零:NilClass

我已经在 rails c 中尝试了 User.find(1).user_profile ,这样可行,所以我确保关系设置正确,

我可能是一个大胖子,试图错误地获取自我

加上你还可以告诉我如何访问模型中的参数...是否可能?

1 个答案:

答案 0 :(得分:0)

has_one关系会自动添加:create_<relationship>build_<relationship>方法。 Checkout the rails guide.

你可以试试这个:

after_create do
  create_user_profile(:name => 'username')
end

或更可能

after_create do
  create_user_profile(:name => self.username)
end