CanCan を使用して次の要件を満たそうとしています。
取引が 1-many ネットワークに割り当てられている場合、割り当てられたネットワークのいずれかのメンバーであれば、ユーザーは取引を読むことができます。
ディールがどのネットワークにも割り当てられていない場合、ネットワーク メンバーシップに関係なく、すべての登録ユーザーがディールを表示できます。
取引がネットワークに割り当てられていないが、取引が member_only = true とマークされている場合、ユーザーはネットワークのメンバーであれば取引を読むことができます。取引がネットワークに割り当てられておらず、member_only = false とマークされている場合、すべての登録ユーザーが取引を読み取ることができます。ゲスト (つまり、ユーザーではない) は取引を読むことができません
私は以下で2-4をカバーしていると思います:
if current_user.persisted?
can :read, Deal, current_user.networks.empty? ? { member_only: false } : {}
end
しかし、ネットワークに割り当てられた取引をさらに制限する方法がわかりません。これはCanCanで可能ですか?もしそうなら、どのように提案しますか?ありがとう。