gpt4 book ai didi

ruby-on-rails - 创建一个 created_by 列并与 rails 关联?

转载 作者:数据小太阳 更新时间:2023-10-29 08:19:25 26 4
gpt4 key购买 nike

唉......我觉得自己是这方面的新手,所以假设我有几个模型:

class Question < ActiveRecord::Base
has_many :answers
belongs_to :user
end

class Answer < ActiveRecord::Base
belongs_to :question
has_one :user
end

class User < ActiveRecord::Base
has_many :questions
has_many :answers, :through => :questions
end

所以我的问题是我不知道如何获取创建问题或答案的用户,应该在创建问题(或创建答案)时确定用户,并且用户应该来自当前用户 session (来自 authlogic 的用户模型和 Controller )见此处:

class ApplicationController < ActionController::Base

helper_method :current_user_session, :current_user

...

private

def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end

def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.user
end

end

现在,current_user 辅助方法工作正常,但我如何设置创建问题或答案的用户?喜欢 id 喜欢只说@question.user

顺便说一句,我的问题架构有一个 created_by 列,但是当我创建一个新问题时它保持为空。

最佳答案

另一种关联 View 的方式(Rails 4 & 5)

belongs_to :created_by, class_name: "User", foreign_key: "created_by_id"

如果需要两个或多个关联到一个类(即“用户”)。

例子:我想创建 User(:email, :password) 并将其与 profile(:name, :surname) 相关联。但我还想添加用户使用他们的 :emails 创建其他用户的配置文件的能力(并进一步向他们发送邀请)。

  1. 创建个人资料(属于用户)和用户(有一个个人资料)。此关联在 Profiles 表中创建 user_id 列。

  2. 在生成的 Profiles 表迁移文件中添加以下行:

    t.belongs_to :user, index: true, optional: true

    因此关联变为:

    “用户 1 - 1..0 配置文件”,一种关系(因此配置文件可能有也可能没有 user_id)

  3. 将顶部提到的关联添加到Profile 模型。

    belongs_to :created_by, class_name: "User", foreign_key: "created_by_id" 
  4. 在 Profile#create 操作中添加 @user.created_by = current_user

关于ruby-on-rails - 创建一个 created_by 列并与 rails 关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1315064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com