Ruby on rails 控制器和视图中的Rails关联混乱
我正在rails中使用designe进行用户身份验证。 我的rails应用程序中有两个型号:-Ruby on rails 控制器和视图中的Rails关联混乱,ruby-on-rails,Ruby On Rails,我正在rails中使用designe进行用户身份验证。 我的rails应用程序中有两个型号:- class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable has_one :userdetails end 我在“userdetails”表中创建了一个与“
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_one :userdetails
end
我在“userdetails”表中创建了一个与“users”表中的id列关联的user\u id列
但是当我更新userdetail的值时,user_id字段仍然为空
我有点困惑,为了设置当前登录用户的用户id,我必须在“Controller”、“view”和“Routes.rb”中写些什么。
由于我是RoR和stackoverflow的新手,如果我没有提供任何信息,请建议我。为用户实例化UserDetails记录的正确方法是:
def new
@userdetail = current_user.userdetails.build
end
您还需要对用户进行身份验证,以确保他已登录,这也使当前用户
对象对您可用。在您的UserDetailsController
before_action :authenticate_user!
在创建操作中,您必须遵循相同的原则:
def create
@userdetail = current_user.userdetails.build(user_details_params)
if @userdetail.save
#...rest of the code
end
end
将userdetail
重命名为profile
,这是一个词,只是一个建议。你不会像现在这样混淆单数和复数:有一个:复数形式的东西,这很奇怪。谢谢你的建议
before_action :authenticate_user!
def create
@userdetail = current_user.userdetails.build(user_details_params)
if @userdetail.save
#...rest of the code
end
end