Я писал несколько тестов, и я столкнулся с чем-то, что я пытаюсь понять.Mongoid: 'update_attribute' с [models, ...] vs with [model_ids, ...]
Какая разница под при вызове:
.update_attributes(:group_ids, [group1.id, group2.id])
против
.update_attributes(:groups, [group1, group2])
Эти 2 модели в вопросе:
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
тест-код в вопросе:
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
Надежда Я сделал чувство, благодаря
Я не понимаю вашего теста. Разделите его в двух отдельных тестовых примерах, где один проходит, а второй - сбои. – EugZol