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

时间:2017-03-27 00:49:25

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

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

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?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

继续查询后,您可以在视图中使用以下内容:

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