我有三个模型,组织,工作和用户。请参阅以下关系:
User.rb
has_many :organizations, :through => :jobs
has_many :jobs, dependent: :destroy
Organization.rb
has_many :users, :through => :jobs
has_many :jobs, dependent: :destroy
Job.rb
belongs_to :organization, :foreign_key => :organization_id
belongs_to :user, :foreign_key => :user_id
因此,您可以看到作业与组织和用户相关。每个工作都有一个附加的角色,无论是常规,管理还是管理。我要做的是查看current_user
是否是视图中组织的管理员或经理。如果他们在具有角色管理的组织中有工作,那么他们会做经理等。
我能够查询用户管理的组织:
includes(:jobs).where(jobs: { :user_id => current_user.id, :role => ["management", "admin"] }
但是,在给定组织对象的情况下,如果用户是管理员或管理员,我该怎么办?
即。 if current_user.organization.admin?
非常感谢任何帮助。
答案 0 :(得分:1)
继续查询后,您可以在视图中使用以下内容:
<% @organizations.each do |organization| %>
<% if organization.jobs.any? { |job| job.role == "manager" } %>
<%= # do something %>
<% end %>
<% end %>