Tôi đã viết một số bài kiểm tra và tôi đã gặp phải một thứ mà tôi đang cố gắng hiểu.Mongoid: 'update_attribute' với [models, ...] vs với [model_ids, ...]
sự khác biệt là gì bên dưới khi gọi:
.update_attributes(:group_ids, [group1.id, group2.id])
vs
.update_attributes(:groups, [group1, group2])
Những 2 mô hình trong câu hỏi:
group.rb
class Group
include Mongoid::Document
has_and_belongs_to_many :users, class_name: "Users", inverse_of: :groups
end
user.rb
class User
include Mongoid::Document
has_and_belongs_to_many :groups, class_name: "Group", inverse_of: :users
end
mã kiểm tra trong câu hỏi:
g1 = create(:group)
u1 = create(:user, groups: [g1])
g1.update_attribute(:users, [u1])
# at this point all the associations look good
u1.update_attribute(:group_ids, [g1.id])
# associations looks good on both sides when i do u1.reload and g1.reload
u1.update_attribute(:groups, [g1])
# g1.reload, this is when g1.users is empty and u1 still has the association
Hy vọng tôi có ý nghĩa, nhờ
Tôi không hiểu bài kiểm tra của bạn. Tách nó trong hai trường hợp thử nghiệm riêng biệt, trong đó một là đi qua và thứ hai là một trong những thất bại. – EugZol