获取具有 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 关系可能很复杂,使用它们的方法有好有坏。
(如果您真正想要的主要关系是群组 > 用户 > 工单,请告诉我,我可以相应地进行调整。)
我有两个模型具有这样的关系:
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 关系可能很复杂,使用它们的方法有好有坏。
(如果您真正想要的主要关系是群组 > 用户 > 工单,请告诉我,我可以相应地进行调整。)