数据库中有三个表。 首先,具有ID的用户。 其次,具有ID的项目 第三,具有user_id,item_id和is_deleted的user_actions。
#Item
has_many :user_actions
#User
has_many :user_actions
#UserAction
belongs_to :user
belongs_to :item
User_actions条目仅在用户选择删除选项时出现。否则,用户在user_actions表中没有该项目的条目。
我必须编写一个查询来获取尚未删除的用户的所有项目。 我尝试在rails5中使用left_join,但无法使其正常工作。
一些我以前没有传达过的信息(我道歉)。
我们需要一种解决方案来解决此问题,在这里我们可以查询并获取用户尚未删除的所有项目。
答案 0 :(得分:0)
假设您的模型如下:
class Item < ApplicationRecord
has_many :user_actions
end
class User < ApplicationRecord
has_many :user_actions
end
class UserAction < ApplicationRecord
belongs_to :user
belongs_to :item
end
您可能缺少User
和Item
之间的关联。
class Item < ApplicationRecord
belongs_to :user
has_many :user_actions
end
class User < ApplicationRecord
has_many :items
has_many :user_actions
end
当然还要运行迁移以在user_id
表中添加items
列
然后您可以执行以下操作:
your_user = User.find your_user_id
deleted_items = UserAction.where(user: your_user).map(&:item).map &:id
items = Item.where(user: your_user).where.not(id: deleted_items)
但是没有更多的信息很难猜测