pundit: fixing up topics and synapses
This commit is contained in:
parent
1cf3182e75
commit
dc6ccd2022
6 changed files with 25 additions and 14 deletions
|
@ -10,7 +10,7 @@ class SynapsesController < ApplicationController
|
||||||
# GET /synapses/1.json
|
# GET /synapses/1.json
|
||||||
def show
|
def show
|
||||||
@synapse = Synapse.find(params[:id])
|
@synapse = Synapse.find(params[:id])
|
||||||
authorize! @synapse
|
authorize @synapse
|
||||||
|
|
||||||
render json: @synapse
|
render json: @synapse
|
||||||
end
|
end
|
||||||
|
@ -20,7 +20,7 @@ class SynapsesController < ApplicationController
|
||||||
def create
|
def create
|
||||||
@synapse = Synapse.new(synapse_params)
|
@synapse = Synapse.new(synapse_params)
|
||||||
@synapse.desc = "" if @synapse.desc.nil?
|
@synapse.desc = "" if @synapse.desc.nil?
|
||||||
authorize! @synapse
|
authorize @synapse
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
if @synapse.save
|
if @synapse.save
|
||||||
|
@ -36,7 +36,7 @@ class SynapsesController < ApplicationController
|
||||||
def update
|
def update
|
||||||
@synapse = Synapse.find(params[:id])
|
@synapse = Synapse.find(params[:id])
|
||||||
@synapse.desc = "" if @synapse.desc.nil?
|
@synapse.desc = "" if @synapse.desc.nil?
|
||||||
authorize! @synapse
|
authorize @synapse
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
if @synapse.update_attributes(synapse_params)
|
if @synapse.update_attributes(synapse_params)
|
||||||
|
@ -50,7 +50,7 @@ class SynapsesController < ApplicationController
|
||||||
# DELETE synapses/:id
|
# DELETE synapses/:id
|
||||||
def destroy
|
def destroy
|
||||||
@synapse = Synapse.find(params[:id])
|
@synapse = Synapse.find(params[:id])
|
||||||
authorize! @synapse
|
authorize @synapse
|
||||||
@synapse.delete
|
@synapse.delete
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
|
|
|
@ -20,12 +20,12 @@ class TopicsController < ApplicationController
|
||||||
# GET topics/:id
|
# GET topics/:id
|
||||||
def show
|
def show
|
||||||
@topic = Topic.find(params[:id])
|
@topic = Topic.find(params[:id])
|
||||||
authorize! @topic
|
authorize @topic
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.html {
|
format.html {
|
||||||
@alltopics = ([@topic] + policy_scope(@topic.relatives))
|
@alltopics = ([@topic] + policy_scope(Topic.relatives(@topic.id)))
|
||||||
@allsynapses = policy_scope(@topic.synapses)
|
@allsynapses = policy_scope(Synapse.for_topic(@topic.id))
|
||||||
|
|
||||||
@allcreators = @alltopics.map(&:user).uniq
|
@allcreators = @alltopics.map(&:user).uniq
|
||||||
@allcreators += @allsynapses.map(&:user).uniq
|
@allcreators += @allsynapses.map(&:user).uniq
|
||||||
|
@ -39,7 +39,7 @@ class TopicsController < ApplicationController
|
||||||
# GET topics/:id/network
|
# GET topics/:id/network
|
||||||
def network
|
def network
|
||||||
@topic = Topic.find(params[:id])
|
@topic = Topic.find(params[:id])
|
||||||
authorize! @topic
|
authorize @topic
|
||||||
|
|
||||||
@alltopics = [@topic] + policy_scope(@topic.relatives)
|
@alltopics = [@topic] + policy_scope(@topic.relatives)
|
||||||
@allsynapses = policy_scope(@topic.synapses)
|
@allsynapses = policy_scope(@topic.synapses)
|
||||||
|
@ -83,7 +83,7 @@ class TopicsController < ApplicationController
|
||||||
# GET topics/:id/relatives
|
# GET topics/:id/relatives
|
||||||
def relatives
|
def relatives
|
||||||
@topic = Topic.find(params[:id])
|
@topic = Topic.find(params[:id])
|
||||||
authorize! @topic
|
authorize @topic
|
||||||
|
|
||||||
topicsAlreadyHas = params[:network] ? params[:network].split(',').map(&:to_i) : []
|
topicsAlreadyHas = params[:network] ? params[:network].split(',').map(&:to_i) : []
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ class TopicsController < ApplicationController
|
||||||
# POST /topics.json
|
# POST /topics.json
|
||||||
def create
|
def create
|
||||||
@topic = Topic.new(topic_params)
|
@topic = Topic.new(topic_params)
|
||||||
authorize! @topic
|
authorize @topic
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
if @topic.save
|
if @topic.save
|
||||||
|
@ -132,7 +132,7 @@ class TopicsController < ApplicationController
|
||||||
# PUT /topics/1.json
|
# PUT /topics/1.json
|
||||||
def update
|
def update
|
||||||
@topic = Topic.find(params[:id])
|
@topic = Topic.find(params[:id])
|
||||||
authorize! @topic
|
authorize @topic
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
if @topic.update_attributes(topic_params)
|
if @topic.update_attributes(topic_params)
|
||||||
|
@ -146,7 +146,7 @@ class TopicsController < ApplicationController
|
||||||
# DELETE topics/:id
|
# DELETE topics/:id
|
||||||
def destroy
|
def destroy
|
||||||
@topic = Topic.find(params[:id])
|
@topic = Topic.find(params[:id])
|
||||||
authorize! @topic
|
authorize @topic
|
||||||
|
|
||||||
@topic.delete
|
@topic.delete
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
|
|
|
@ -14,6 +14,10 @@ class Synapse < ActiveRecord::Base
|
||||||
|
|
||||||
validates :category, inclusion: { in: ['from-to', 'both'], allow_nil: true }
|
validates :category, inclusion: { in: ['from-to', 'both'], allow_nil: true }
|
||||||
|
|
||||||
|
scope :for_topic, ->(topic_id = nil) {
|
||||||
|
where("node1_id = ? OR node2_id = ?", topic_id, topic_id)
|
||||||
|
}
|
||||||
|
|
||||||
# :nocov:
|
# :nocov:
|
||||||
def user_name
|
def user_name
|
||||||
user.name
|
user.name
|
||||||
|
|
|
@ -41,6 +41,13 @@ class Topic < ActiveRecord::Base
|
||||||
|
|
||||||
belongs_to :metacode
|
belongs_to :metacode
|
||||||
|
|
||||||
|
scope :relatives, ->(topic_id = nil) {
|
||||||
|
includes(:synapses1)
|
||||||
|
.includes(:synapses2)
|
||||||
|
.where('synapses.node1_id = ? OR synapses.node2_id = ?', topic_id, topic_id)
|
||||||
|
.references(:synapses)
|
||||||
|
}
|
||||||
|
|
||||||
def user_name
|
def user_name
|
||||||
user.name
|
user.name
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
class SynapsePolicy < ApplicationPolicy
|
class SynapsePolicy < ApplicationPolicy
|
||||||
class Scope < Scope
|
class Scope < Scope
|
||||||
def resolve
|
def resolve
|
||||||
scope.where('permission IN (?) OR user_id = ?', ["public", "commons"], user.id)
|
scope.where('synapses.permission IN (?) OR synapses.user_id = ?', ["public", "commons"], user.id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
class TopicPolicy < ApplicationPolicy
|
class TopicPolicy < ApplicationPolicy
|
||||||
class Scope < Scope
|
class Scope < Scope
|
||||||
def resolve
|
def resolve
|
||||||
scope.where('permission IN (?) OR user_id = ?', ["public", "commons"], user.id)
|
scope.where('topics.permission IN (?) OR topics.user_id = ?', ["public", "commons"], user.id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue