MongoId - 引用关联不起作用 - Rails 7

MongoId - Reference association not working - Rails 7

提问人:Stf_F 提问时间:10/31/2023 更新时间:10/31/2023 访问量:18

问:

我有一个 Rails 7 应用程序,我的注册表单只包含 2 个字段:

  • 公司名称
  • 电子邮件

注册涉及以下模型:

  • 公司
  • 帐户
  • 用户

涉及的协会有:

  • 一家公司有一个帐户(嵌入式关联),
  • 一个帐户可以有一个或多个用户(引用的关联)

这个想法是,在注册时,控制器应该创建:

  • 使用窗体中的名称创建的公司文档,并嵌入了“帐户”文档
  • 嵌入在公司中的“帐户”文档,其中包含引用所创建用户的用户数组
  • 使用注册表单中使用的电子邮件创建的用户文档。

到目前为止,除了用户引用关联外,一切都按预期工作。无论我尝试什么,公司文档中嵌入的“帐户”文档都不会显示引用“我的用户”的用户数组。

我可能错过了一些明显的东西,但我再也看不到树木的森林了。

注册控制器

    def create
      @account, @user, @company = Account.new, User.new, Company.new
      @user.email = registration_params[:user][:email]
      @account.users << @user
      @company.name, @company.account = registration_params[:company][:name].squish, @account
      
      puts "registration valid checks"
      puts @company.valid?, @account.valid?, @user.valid? #All valid

      if @user.save and @account.save and @company.save
        flash[:email] = @user.email
        redirect_to "/thank-you", notice: "Account was successfully created."
      else
       render :new, status: :unprocessable_entity 
      end
    end

账户模型

class Account
  include Mongoid::Document
  include Mongoid::Timestamps
  
  field :creation_date, type: DateTime

  has_many :users

  embedded_in :company

  validates_presence_of :users, on: :create #Does not yield errors

end

用户模型

class User
  include Mongoid::Document
  include Mongoid::Timestamps

  field :email, type: String

  belongs_to :account
  
  validates :email, presence: true, uniqueness:  { case_sensitive: false }, on: :create
end

然而,当查看保存在 Mongo 中的 Company 文档时,输出如下所示:

[...]
name: 'xxx',
account: {
_id: xxx,
updated_at: xxx,
created_at: xxx
}
[...]

我期望的东西大致如下:

[...]
name: 'xxx',
account: {
_id: xxx,
updated_at: xxx,
created_at: xxx,
users: [{_id:'xxxx'}]
}
[...]

任何帮助将不胜感激。

谢谢

Ruby-on-Rails MongoDB 协会 Mongoid

评论


答: 暂无答案