Rails - 通过另一个对象检查属性

Rails - Checking Attributes Through Another Object

我有三个模型,组织、工作和用户。见以下关系:

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?

非常感谢任何帮助。

根据您的查询,您可以在您的视图中使用类似这样的内容:

<% @organizations.each do |organization| %>
  <% if organization.jobs.any? { |job| job.role == "manager" } %>
    <%= # do something  %>
  <% end %>
<% end %>