我正在开发一个应用程序,用户可以选择项目,但不能选择已经选择的项目。
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 }
请帮帮我。
发布于 2019-04-23 19:30:51
您可以在where查询中排除选定的in,如下所示:
@board = Board.find(params[:id])
selected_item_ids = @board.board_items.pluck(:item_id)
@unselected_items = Item.where.not(id: selected_item_ids)
发布于 2019-04-23 19:32:40
您应该能够通过一个简单的查询来完成这项工作,例如
Item.includes(:board).where(boards: {id: nil })
您可能需要对有关模型的语法进行一些调整。
目标是加载除具有现有关系的项之外的所有项
https://stackoverflow.com/questions/55818060
复制