BigW Consortium Gitlab
Fix mentioned users on diff notes ## Summary `DiffNote`, and `LegacyDiffNote` returns empty array for `mentionable_attrs`, because `mentionable_attrs` is not inheritable by subclasses. The problem can be illustrated with this small sample: ```ruby module Mentionable extend ActiveSupport::Concern module ClassMethods def attr_mentionable(attr) mentionable_attrs << [attr.to_s] end def mentionable_attrs @mentionable_attrs ||= [] end end end class A include Mentionable attr_mentionable :foo end class B < A end A.mentionable_attrs => [["foo", {}]] B.mentionable_attrs => [] ``` Possible solution using `cattr_accessor`: ```ruby module Mentionable extend ActiveSupport::Concern module ClassMethods def attr_mentionable(attr) mentionable_attrs << [attr.to_s] end end included do cattr_accessor :mentionable_attrs, instance_accessor: false do [] end end end class A include Mentionable attr_mentionable :foo end class B < A end A.mentionable_attrs => [["foo"]] B.mentionable_attrs => [["foo"]] B.mentionable_attrs < [:bar] => [["foo"], ["bar"]] A.mentionable_attrs => [["foo"], ["bar"]] ``` `mentionable_attrs` is inheritable by subclasses. If a subclass changes the value then that would also change the value for parent class. Similarly if parent class changes the value then that would change the value of subclasses too. ## What are the relevant issue numbers? Fixes #19807 Fixes #18022 /cc @stanhu @DouweM @rspeicher See merge request !5243
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
ci | Loading commit data... | |
concerns | Loading commit data... | |
hooks | Loading commit data... | |
members | Loading commit data... | |
network | Loading commit data... | |
project_services | Loading commit data... | |
.gitkeep | Loading commit data... | |
ability.rb | Loading commit data... | |
abuse_report.rb | Loading commit data... | |
appearance.rb | Loading commit data... | |
application_setting.rb | Loading commit data... | |
audit_event.rb | Loading commit data... | |
award_emoji.rb | Loading commit data... | |
blob.rb | Loading commit data... | |
broadcast_message.rb | Loading commit data... | |
commit.rb | Loading commit data... | |
commit_range.rb | Loading commit data... | |
commit_status.rb | Loading commit data... | |
deploy_key.rb | Loading commit data... | |
deploy_keys_project.rb | Loading commit data... | |
deployment.rb | Loading commit data... | |
diff_note.rb | Loading commit data... | |
email.rb | Loading commit data... | |
environment.rb | Loading commit data... | |
event.rb | Loading commit data... | |
external_issue.rb | Loading commit data... | |
forked_project_link.rb | Loading commit data... | |
generic_commit_status.rb | Loading commit data... | |
global_label.rb | Loading commit data... | |
global_milestone.rb | Loading commit data... | |
group.rb | Loading commit data... | |
identity.rb | Loading commit data... | |
issue.rb | Loading commit data... | |
key.rb | Loading commit data... | |
label.rb | Loading commit data... | |
label_link.rb | Loading commit data... | |
legacy_diff_note.rb | Loading commit data... | |
lfs_object.rb | Loading commit data... | |
lfs_objects_project.rb | Loading commit data... | |
member.rb | Loading commit data... | |
merge_request.rb | Loading commit data... | |
merge_request_diff.rb | Loading commit data... | |
milestone.rb | Loading commit data... | |
namespace.rb | Loading commit data... | |
note.rb | Loading commit data... | |
notification_setting.rb | Loading commit data... | |
oauth_access_token.rb | Loading commit data... | |
personal_access_token.rb | Loading commit data... | |
personal_snippet.rb | Loading commit data... | |
project.rb | Loading commit data... | |
project_group_link.rb | Loading commit data... | |
project_import_data.rb | Loading commit data... | |
project_snippet.rb | Loading commit data... | |
project_team.rb | Loading commit data... | |
project_wiki.rb | Loading commit data... | |
protected_branch.rb | Loading commit data... | |
release.rb | Loading commit data... | |
repository.rb | Loading commit data... | |
security_event.rb | Loading commit data... | |
sent_notification.rb | Loading commit data... | |
service.rb | Loading commit data... | |
snippet.rb | Loading commit data... | |
spam_log.rb | Loading commit data... | |
spam_report.rb | Loading commit data... | |
subscription.rb | Loading commit data... | |
todo.rb | Loading commit data... | |
tree.rb | Loading commit data... | |
u2f_registration.rb | Loading commit data... | |
user.rb | Loading commit data... | |
users_star_project.rb | Loading commit data... | |
wiki_page.rb | Loading commit data... |