"role = 'primary_user'-6ren">
gpt4 book ai didi

ruby-on-rails - 使用 has_one with condition 来查找相关对象,但是如何创建相关对象呢?

转载 作者:太空宇宙 更新时间:2023-11-03 16:07:50 25 4
gpt4 key购买 nike

我有一个具有以下内容的帐户模型:

has_one :primary_user, :class_name => "User", :conditions => "role = 'primary_user'"

因此@account.primary_user 查找具有primary_user 角色的用户。

创建新帐户时,我希望能够创建一个新的 primary_user。执行此操作的“Rails 方式”是什么?

我需要创建一个 primary_user= 方法吗?

这是我创建的表单..

<%= semantic_form_for @account do |f| %>
<%= f.input :account_name %>

<%= f.semantic_fields_for :primary_user do |user| %>
<%= user.input :email %>
<% end %>
<% end %>

如果我提交此表单,我会得到

ActiveRecord::AssociationTypeMismatch(用户(#2159789500)预期,得到 ActiveSupport::HashWithIndifferentAccess(#2159703820)):

谢谢

最佳答案

小清洁工:

has_one :primary_user, :class_name => "User", :conditions => { :role => "primary_user" }

然后直解:

<%= semantic_form_for @account do |f| %>
<%= f.input :account_name %>

<%= f.semantic_fields_for :primary_user, primary_user || build_primary_user do |user| %>
<%= user.input :email %>
<% end %>
<% end %>

但我建议你将它添加到 Controller 中的新操作中

@account.build_primary_user

关于ruby-on-rails - 使用 has_one with condition 来查找相关对象,但是如何创建相关对象呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9789183/

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