【发布时间】:2014-01-19 18:15:00
【问题描述】:
使用 Rails,我有以下形式...
Events#New - 表单部分
<%= simple_form_for @event, multipart: true do |f| %>
...
<% unless signed_in? %>
<%= f.simple_fields_for :user do |u| %>
<%= u.input :name %>
<%= u.input :email %>
<% end %>
<% end %>
...
<%= f.submit %>
<% end %>
一旦提交该表单,它将创建表单和nested_attribute。哪个 Event 属于一个用户。
事件模型
class Event < ActiveRecord::Base
belongs_to :user
accepts_nested_attributes_for :user
end
但我的问题是,这些字段是必填字段,您无需登录即可提交此表单。
我想要的是当您填写表单并且用户电子邮件存在时,它应该只将事件添加到该用户,否则它应该创建一个新的用户记录。 现在它所做的只是添加额外的用户记录。
我设法以不使用nested_attributes 并仅接受params[:name] 和params[:email] 的方式进行工作,然后进行检查,如果存在将其添加为User.find_by(email: params[:email]).builds.events(event_params),但我想直接修改方式模型处理数据,因为我觉得控制器不适合这个逻辑。
对此的任何帮助将不胜感激!
谢谢:)
【问题讨论】:
标签: ruby-on-rails forms nested-attributes