我有两个模型User
和Conf
。他们有has_and_belongs_to_many
的关系。当我尝试创建新的conf时,app会将其记录到confs
表但不记录confs_users
表。因此不会为用户分配新记录。
conf.rb
class Conf < ActiveRecord::Base
attr_accessible :id, :linear_axis_number, :control_unit_brand, :control_unit_model, :description,
:machine_brand, :machine_model, :milling_mode, :rotary_axis_number, :tool_axis_x, :tool_axis_y,
:tool_axis_z, :turning_mode, :machine_name, :developer_id, :xml, :user_id
has_and_belongs_to_many :users
belongs_to :developer, :class_name => 'User', :foreign_key => 'developer_id'
has_attached_file :xml, :url => "downloads/:attachment/:id/:basename.:extension", :path => ":rails_root/downloads/:attachment/:id/:basename.:extension"
attr_protected :xml_file_name, :xml_content_type, :xml_file_size
end
user.rb
class User < ActiveRecord::Base
attr_accessible :email, :name, :password, :password_confirmation, :developer, :admin, :company_id, :boss_id
belongs_to :company
has_and_belongs_to_many :confs
has_secure_password
end
confs_controller.rb
class ConfsController < ApplicationController
before_filter :signed_in_user, only:[:index, :edit, :update, :destroy]
before_filter :developer_user, only: :destroy
def new
@users = User.where(:boss_id => current_user.id)
@conf = Conf.new
end
def create
@conf = Conf.new(conf_params)
if @conf.save
flash[:success] = "New Configuration uploaded!"
redirect_to conf_show_own_path
else
@users = User.where(:boss_id => current_user.id)
flash[:error] = "There is a problem!"
render 'new'
end
end
private
def conf_params
params.require(:conf).permit( :id, :linear_axis_number, :control_unit_brand, :control_unit_model, :xml,
:description, :machine_brand, :machine_model, :milling_mode, :developer_id,
:rotary_axis_number, :tool_axis_x, :tool_axis_y, :tool_axis_z, :turning_mode,
:machine_name, :user_id) if params[:conf]
end
end
new.html.erb
<%= form_for @conf, :html => {:multipart => true} do |f| %>
<%= f.label :machine_name %>
<%= f.text_field :machine_name %>
.....
<% @users.each do |g| %>
<%= check_box_tag 'conf[user_id][]', g.id, false, :id => g.name %>
<%= label_tag g.name %>
<% end %>
<%= f.submit "Upload", class: "btn btn-large btn-primary" %>
<% end %>
我想我应该添加类似@conf.users << @user
的内容,但因为我在确定在填写表单的过程中借助复选框分配哪些用户,我不知道该怎么做。
答案 0 :(得分:2)
您可以一次性分配所有用户:
@conf.users << User.find(params[:conf][:user_id])