make map methods use ActiveRecord relations so they don't error on pundit
This commit is contained in:
parent
47bca5907e
commit
4875a8b0c4
1 changed files with 5 additions and 7 deletions
|
@ -41,11 +41,11 @@ class Map < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def contributors
|
def contributors
|
||||||
mappings.map(&:user).uniq
|
User.where(id: mappings.map(&:user_id).uniq)
|
||||||
end
|
end
|
||||||
|
|
||||||
def editors
|
def editors
|
||||||
collaborators + [user]
|
User.where(id: user_id).or(User.where(id: collaborators))
|
||||||
end
|
end
|
||||||
|
|
||||||
def topic_count
|
def topic_count
|
||||||
|
@ -87,7 +87,7 @@ class Map < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def starred_by_user?(user)
|
def starred_by_user?(user)
|
||||||
user.stars.where(map: self).exists?
|
user&.stars&.where(map: self)&.exists?
|
||||||
end
|
end
|
||||||
|
|
||||||
def as_json(_options = {})
|
def as_json(_options = {})
|
||||||
|
@ -114,9 +114,8 @@ class Map < ApplicationRecord
|
||||||
|
|
||||||
def add_new_collaborators(user_ids)
|
def add_new_collaborators(user_ids)
|
||||||
users = User.where(id: user_ids)
|
users = User.where(id: user_ids)
|
||||||
current_collaborators = collaborators + [user]
|
|
||||||
added = users.map do |new_user|
|
added = users.map do |new_user|
|
||||||
next nil if current_collaborators.include?(new_user)
|
next nil if editors.include?(new_user)
|
||||||
UserMap.create(user_id: new_user.id, map_id: id)
|
UserMap.create(user_id: new_user.id, map_id: id)
|
||||||
new_user.id
|
new_user.id
|
||||||
end
|
end
|
||||||
|
@ -124,8 +123,7 @@ class Map < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def remove_old_collaborators(user_ids)
|
def remove_old_collaborators(user_ids)
|
||||||
current_collaborators = collaborators + [user]
|
removed = editors.map(&:id).map do |old_user_id|
|
||||||
removed = current_collaborators.map(&:id).map do |old_user_id|
|
|
||||||
next nil if user_ids.include?(old_user_id)
|
next nil if user_ids.include?(old_user_id)
|
||||||
user_maps.where(user_id: old_user_id).find_each(&:destroy)
|
user_maps.where(user_id: old_user_id).find_each(&:destroy)
|
||||||
access_requests.where(user_id: old_user_id).find_each(&:destroy)
|
access_requests.where(user_id: old_user_id).find_each(&:destroy)
|
||||||
|
|
Loading…
Add table
Reference in a new issue