我的帐户模型具有以下内容:
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::HashWithIn DifferentAccess(#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 来查找相关对象,但是如何创建相关对象呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9789183/