次のことを行うためのより良い方法があるかどうか疑問に思っています。
ユーザーhas_manyプロジェクト
プロジェクトhas_manyリスト
リストhas_manyアイテム
特定のユーザーは特定のプロジェクトにのみアクセスできます。ただし、ユーザーがプロジェクトにアクセスできる場合、ユーザーはそのプロジェクトに属するすべてのリストとアイテムにアクセスできます。
これが私がクリーンアップしたい方法です:
def check_for_user_access(resource, resource_class, user)
case resource_class
when 'Project'
if resource.user == user
return true
end
when 'List'
if resource.project.user == user
return true
end
when 'Item'
if resource.list.project.user == user
return true
end
else
return false
end
end
アクセスは実際にはProjectに関連付けられているだけなので、ListとItemにuser_id属性は必要ありませんでした。
わずかに異なる比較をラップアラウンドするswitchステートメントを使用するよりもこれを行うためのより良い方法はありますか?
前もって感謝します!