我在rails中使用设计进行用户身份验证。 我的rails应用程序中有2个模型: -
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_one :userdetails
end
和
class Userdetail < ActiveRecord::Base
belongs_to :user
end
在user_detail控制器中,我尝试了
def new
@userdetail = Userdetail.new
end
我在&#34; userdetails&#34;中创建了一个user_id列。与&#34;用户&#34;中的ID列关联的表表
但是当我更新userdetail的值时,user_id字段保持为空。
我有点困惑我要写的内容&#34; Controller&#34;,&#34; view&#34;和&#34; Routes.rb&#34;为了设置当前登录用户的user_id。 由于我是RoR和stackoverflow的新手,如果我错过了提供任何信息,请建议我。
答案 0 :(得分:0)
为用户实例化UserDetails记录的正确方法是:
def new
@userdetail = current_user.userdetails.build
end
您还需要对用户进行身份验证,以确保他已登录,这也使current_user
对象可供您使用。您需要在before_action
UserDetailsController
before_action :authenticate_user!
在create
行动中,您必须遵循相同的原则:
def create
@userdetail = current_user.userdetails.build(user_details_params)
if @userdetail.save
#...rest of the code
end
end