Rails 正在创建用户后尝试创建配置文件
Rails Trying to create a profile after the user has been created
我正在尝试弄清楚如何为刚刚创建的用户创建新的配置文件,
我在 User 模型上使用设计,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
这会产生以下错误:
undefined method `new' for nil:NilClass
我试过 User.find(1).user_profile 在 rails c这很有效,所以我很确定关系设置正确,
我可能是个大胖子,试图错误地获取 self。
此外,您能否告诉我如何访问模型中的参数...这可能吗?
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
我正在尝试弄清楚如何为刚刚创建的用户创建新的配置文件,
我在 User 模型上使用设计,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
这会产生以下错误:
undefined method `new' for nil:NilClass
我试过 User.find(1).user_profile 在 rails c这很有效,所以我很确定关系设置正确,
我可能是个大胖子,试图错误地获取 self。
此外,您能否告诉我如何访问模型中的参数...这可能吗?
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