Skip to content

Instantly share code, notes, and snippets.

@giancarlosisasi
Created July 28, 2016 03:42
Show Gist options
  • Select an option

  • Save giancarlosisasi/7b8977fcbbd7a96cf7441f15b603ecc5 to your computer and use it in GitHub Desktop.

Select an option

Save giancarlosisasi/7b8977fcbbd7a96cf7441f15b603ecc5 to your computer and use it in GitHub Desktop.
class Api::V1::ArticlessController < ApplicationController
before_action :authenticate, only: [:create, :update, :destroy] # usando el metodo de nuestro applicationController vericamos que el token sea valido y autentificamos al usuario (este sera asigando a nuestra variable @current_user)
before_action :set_article, only: [:show ,:update, :destroy] # el tipo metodo para encontrar al articulo, esta demas explicarlo
def index
@articles = Article.all
end
def show
end
def create
@article = @current_user.article.new(quiz_params) # ya tenemos el usuario identificado por lo que procedemos a crearle el articulo respectivo
if @article.save
render template: 'api/v1/articles/show' # hacemos un render a nuestra vista show para mostrar los datos del articulo creado
else
render json: { error: @article.errors }, status: :unprocessable_entity # si no pasan las validaciones entonces muestra los errors, deberia pasar pues nosotros no tenemos validaciones :|
end
end
def update
if @current_user == @article.user # aqui usamos el current_user para verificar que efectivamente el usuario sera el mismo que creó el articulo
@article.update(quiz_params) # una vez se ha validado que el usuario es el dueño del articulo, procedemos a hacer el update
render 'api/v1/quizzes/show' # mostramos los datos actualizados
else
render json: { error: 'you dont have permission' }, status: :unauthorized # si el usuario no es el mismo que creó el articulo, entonces se muestran los errores
end
end
private
def set_article
@article = Article.find(params[:id]) # identificamos el articulo a actualizar o eliminar
end
def quiz_params
params.require(:article).permit(:title, :body) # los tipicos strongs params, no hay mucho que explicar
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment