我尝试创建一个表单,允许用户选择多个联系人,在其中共享对用户创建的构建的访问权。
这是一个小小的背景,理解并不完全需要:
数据库结构是用户具有多个建筑物,用户具有多个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