我正在开发一个应用程序,用户可以选择项目,但他们不能选择已经选择的项目。
BoardItem具有board_id和item_id。 已经选择的项目不应包括在所选集合中。 项目和董事会都有董事会项目。
@board = Board.find(params[:id])
@chosen = BoardItem.select{ |board_item| board_item.board === @board }
@choosing = Item.select{ |item| item.board_items.each do |board_item|
@chosen.exclude?(board_item)
end }
请帮助我。
答案 0 :(得分:2)
您可以在where查询中排除以下选定的ID:
@board = Board.find(params[:id])
selected_item_ids = @board.board_items.pluck(:item_id)
@unselected_items = Item.where.not(id: selected_item_ids)
答案 1 :(得分:1)
您应该能够使用简单的查询(例如
)来完成此操作Item.includes(:board).where(boards: {id: nil })
您可能需要对模型的语法进行一些调整。
目标是加载所有期望具有现有关系的项目