我有一个用户输入信息的表单。但我还想将其中一个输入字段数据保存到另一个表中。
我有User
表和Business
表
<%= form_for @user, :html => {:multipart => true} do |f| %>
... some input fields
<%= f.text_field :company_name %>
... more input fields
<%= f.submit "Save" %>
<% end %>
我的控制器是这样的:
def edit
@user = User.find(current_user.id)
@biz = Business.find_or_create_by_name(params[:company_name])
@biz.save
end
它将数据保存在用户表中,但不将数据保存到Business表中。
答案 0 :(得分:1)
一些事情。当edit
显示表单并且update
处理PUT(以及更新属性)时,Rails会喜欢它。如果这样做,您的方法将如下所示。
def edit
@user = User.find(current_user.id)
end
def update
@user = User.find(current_user.id)
@user.update_attributes(params[:user])
end
如果使用用户参数提交公司名称,我还会使用逻辑在用户模型中创建业务。
在User.rb
中validates_length_of :business_name, :minimum => 2, :allow_blank => true
attr_accessor :business_name
before_validation :ensure_business
def ensure_business
if business_name.present?
b = Business.where(:name => business_name).first_or_create
self.business_id = b.id
end
end