选择多对多关系为空的记录

时间:2016-10-28 14:37:54

标签: ruby-on-rails activerecord ancestry

我在folderuser

之间存在多对多关系
class Folder
    has_many :folder_share_authorities, dependent: :destroy
    has_many :shared_users, through: :folder_share_authorities, source: :user
end

class User
    has_many :folder_share_authorities, dependent: :destroy
    has_many :shared_folders, through: :folder_share_authorities, source: :folder
end

class FolderShareAuthority < ApplicationRecord
    belongs_to :folder
    belongs_to :user
end

我的文件夹表格由ancestry gem构成。

现在,当我与用户共享文件夹(创建FolderShareAuthority关系)时,如何让该文件夹的所有后代也与该用户共享?

我还有一个对索引,以确保一个user与一个folder只有1个关系。所以我想我应该首先选择所有后代尚未与用户分享,然后为这些后代建立关系?

class CreateFolderShareAuthorities < ActiveRecord::Migration[5.0]
    .......
    add_index :folder_share_authorities, [:folder_id, :user_id], unique: true
end

p / s:文件夹的后代只能通过folder.descendants命令查询(来自ancestry gem)

0 个答案:

没有答案