提问人:Stf_F 提问时间:10/31/2023 更新时间:10/31/2023 访问量:18
MongoId - 引用关联不起作用 - Rails 7
MongoId - Reference association not working - Rails 7
问:
我有一个 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'}]
}
[...]
任何帮助将不胜感激。
谢谢
答: 暂无答案
评论