获取具有 Rails 关系的项目

Get items with Rails relations

我有两个模型具有这样的关系:

class Ticket < ActiveRecord::Base
 belongs_to :group
end
class User < ActiveRecord::Base
 has_and_belongs_to_many :groups
 has_many :tickets, as: :assignable
end
class Group < ActiveRecord::Base
 has_many :tickets, -> { order(:created_at) }
 has_and_belongs_to_many :users
end

我需要获取属于用户拥有的同一组的所有门票。 我怎样才能做到这一点?非常感谢!

就目前情况而言,您的关系不完整,因此 Rails 无法正常工作。如果用户 has_many 票,则票必须 belong_to(或至少 has_one)用户。或者,用户可以 have_many 门票 through 组,在这种情况下似乎更有可能。

但是,即便如此,您的 Group 模型在做什么也不清楚。特别是,不清楚您打算如何将其与 User 相关联 - 这看起来是一种相当复杂的关系。

不过,首先,尝试像这样设置模型:

class Ticket < ApplicationRecord
 belongs_to :group
end

class Group < ApplicationRecord
 belongs_to :user
 has_many :tickets, dependent: :destroy
end

class User < ApplicationRecord
 has_many :groups, dependent: :destroy
 has_many :tickets, through: :groups
end

(您会看到我也从 ApplicationRecord 继承了这些模型,我一直都是这样做的。)

如果你按照上面的方式设置,你可以通过简单的@user.tickets.

获取你的工单记录

如果可行,您可以为组和用户添加额外的 HABTM 关系。但请注意,HABTM 关系可能很复杂,使用它们的方法有好有坏。

(如果您真正想要的主要关系是群组 > 用户 > 工单,请告诉我,我可以相应地进行调整。)