Rails - 如何在表单中创建多个记录,并根据哪些记录进行检查?

时间:2014-04-03 19:51:32

标签: ruby-on-rails

我尝试创建一个表单,允许用户选择多个联系人,在其中共享对用户创建的构建的访问权。

这是一个小小的背景,理解并不完全需要:

数据库结构是用户具有多个建筑物,用户具有多个UserConnections,而UserConnection具有多个BuildingShares。当用户想要共享建筑物时,他们会选择哪些联系人,然后提交他们的选择。这将为所选的每个用户创建一个BuildingShare记录,该记录是用户和联系人之间User_connection的子记录。

因此,当用户想要共享建筑物时,他们会前往建筑物/共享'。然后,building_shares控制器会加载该用户联系人的列表:

class BuildingSharesController < ApplicationController

  def share
    @contacts = current_user.get_contacts
  end

  ...

end

我不确定如何构建表单视图,以便为通过复选框选择的每个联系人创建Building_share记录。如果我能以某种方式将@contacts数组配对以仅包含所选的联系人,那么我可以将此方法添加到BuildingSharesController:

def create_multiple
  @contacts.each do |contact|
    @user_connection = UserConnection.find(user_id: current_user.id, contact_id: @contact.id)
    @building_share = BuildingShare.find(user_connection_id: @user_connection.id, building_id: @building.id)
    if @building_share.nil?
      @building_share = BuildingShare.new(user_connection_id: @user_connection.id, building_id: @building.id)
      @building_share.save
    end
  end
end 

0 个答案:

没有答案