我有两个班级
class Round
include Mongoid::Document
include Mongoid::Attributes::Dynamic
has_many :users
end
class User
include Mongoid::Document
include Mongoid::Attributes::Dynamic
belongs_to :round
end
这一切都很好,但我想要的是Round模型上的两种方法 good_users和bad_users,都是User类的关系。我想重用用户类,但有一个不同的方法访问。
我知道经典模型在用户上使用一个字段,将其与round相关联,因此用户在数据库中有一个round_id字段。但我可以通过设置来确定。 Round类有两个字段,用户的id作为数组存储在其中。
这是我可以用mongoid开箱即用的东西吗?
答案 0 :(得分:1)
这将在用户中为两个关系创建两列。
round.rb
has_many :good_users, class_name: 'User', inverse_of: :good_in_round
has_many :bad_users, class_name: 'User', inverse_of: :bad_in_round
user.rb
belongs_to :good_in_round, class_name: 'Round', inverse_of: :good_users
belongs_to :bad_in_round, class_name: 'Round', inverse_of: :bad_users
Mongoid将相关的对象id作为一个Array存储在多对多的关系中。所以你也可以在这里使用
round.rb
has_and_belongs_to_many :good_users, class_name: 'User', inverse_of: :good_in_round
has_and_belongs_to_many :bad_users, class_name: 'User', inverse_of: :bad_in_round