检查 mongoid habtm 关系是否已更改?
check if mongoid habtm relationship was changed?
如果在关系中添加了对象,我需要发送电子邮件
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
谢谢!
问题已通过可更改的 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
谢谢!
如果在关系中添加了对象,我需要发送电子邮件
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
谢谢!
问题已通过可更改的 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
谢谢!