проверить, изменились ли отношения mongoid habtm? - PullRequest
0 голосов
/ 30 апреля 2018

Мне нужно отправить электронное письмо, если объект был добавлен в отношения

Account.rb модель

has_and_belongs_to_many :managers, class_name: 'User', inverse_of: :accounts

User.rb модель

has_and_belongs_to_many :accounts, inverse_of: :managers

В консоли:

[15] pry(main)> a.reload
=> #<Account _id: 5ae71215a8abbc6378b4bee8, code: "ACC5", name: "Account5", manager_ids: []>
[16] pry(main)> u.reload
=> #<User _id: 5ae59b5da8abbc6f3d880a10, name: "Manager 1", account_ids: []>
[17] pry(main)> a.managers << u
=> [#<User _id: 5ae59b5da8abbc6f3d880a10, name: "Manager 1", account_ids: [BSON::ObjectId('5ae71215a8abbc6378b4bee8')]>]
[18] pry(main)> a.reload
=> #<Account _id: 5ae71215a8abbc6378b4bee8, code: "ACC5", name: "Account5", manager_ids: [BSON::ObjectId('5ae59b5da8abbc6f3d880a10')]>
[19] pry(main)> a.managers.select { |e| e.new_record? }.any?
=> false
[20] pry(main)> a.managers.any? {|a| a.changed?}
=> false

я пробовал с a.managers.select { |e| e.new_record? }.any? и a.managers.any? {|a| a.changed?}, но я всегда получаю false

Спасибо!

1 Ответ

0 голосов
/ 02 мая 2018

Проблема была решена со сменным модулем Mongoid Module: Mongoid::Changeable

https://www.rubydoc.info/github/mongoid/mongoid/Mongoid/Changeable

Но вы не должны создавать отношения таким образом:

a.managers << u

Чтобы проверить такие методы, как a.manager_ids_changed? или a.manager_ids_was, необходимо создать отношения следующим образом:

a.manager_ids << u.id

Спасибо!

...