ruby-on-rails - 使用带有条件的 has_one 来查找相关对象,但是如何创建相关对象呢?

标签 ruby-on-rails ruby activerecord ruby-on-rails-3.2

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

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/

相关文章:

ruby - 在 Atom 中运行 Ruby 程序

ruby-on-rails - ActiveRecord 数组计数

ruby-on-rails - Rails 多态性 'backwards'

ruby-on-rails - ActiveRecord 默认索引

ruby-on-rails - Rspec 最佳实践 : Why should "it" expect only one thing?

ruby-on-rails - 生产服务器无法识别 Figaro gem 设置的环境变量

ruby - 如何在不使用 Ruby 中的 "string.reverse"方法的情况下检查单词是否为回文?

ruby - 为什么在 Ruby 中未初始化的实例变量返回 nil,但未初始化的类变量会引发错误?

ruby-on-rails - 在 ruby​​-1.8.7-p334 [ x86_64 ] 上使用 rvm 安装 nokogiri gem 时出错

ruby-on-rails - 如何使用基于语言的 View 和模板?