1
0
Fork 0

Add action PassportsController#update

This commit is contained in:
Alex Kotov 2018-11-30 09:40:50 +05:00
parent ed4676d486
commit 139770b4ce
No known key found for this signature in database
GPG key ID: 4E831250F47DE154
8 changed files with 45 additions and 4 deletions

View file

@ -31,6 +31,15 @@ class PassportsController < ApplicationController
redirect_to @passport
end
# PATCH/PUT /passports/:id
def update
authorize @passport
return render :show unless @passport.update permitted_attributes @passport
redirect_to @passport
end
private
def set_passport

View file

@ -9,6 +9,10 @@ class PassportPolicy < ApplicationPolicy
true
end
def update?
true
end
def permitted_attributes_for_create
%i[
surname given_name patronymic sex date_of_birth place_of_birth series

View file

@ -11,6 +11,11 @@
<div class="col-md-6">
<% if @passport.image.attached? %>
<%= image_tag url_for(@passport.image), class: 'img-fluid' %>
<% elsif policy(@passport).update? %>
<%= simple_form_for @passport do |f| %>
<%= f.input :image %>
<%= f.button :submit %>
<% end %>
<% end %>
</div>
</div>

View file

@ -25,6 +25,7 @@ en:
comment: Comment
passport:
id: ID
image: Image
surname: Surname
given_name: Given names
patronymic: Patronymic

View file

@ -25,6 +25,7 @@ ru:
comment: Комментарий
passport:
id: ID
image: Изображение
surname: Фамилия
given_name: Имя
patronymic: Отчество

View file

@ -28,7 +28,7 @@ Rails.application.routes.draw do
resources :membership_applications, only: %i[new create]
resources :passports, only: %i[index show new create]
resources :passports, only: %i[index show new create update]
resources :telegram_bot_updates, only: :create
end

View file

@ -6,9 +6,7 @@ FactoryBot.define do
image_filename { image_fixture }
image_fixture { "passport_image_#{rand(1..4)}.jpg" }
image_path do
File.join File.expand_path('..', __dir__), 'fixtures', image_fixture
end
image_path { Rails.root.join 'fixtures', image_fixture }
end
surname { Faker::Name.last_name }

View file

@ -0,0 +1,23 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe 'PATCH/PUT /passports/:id' do
let!(:passport) { create :passport }
let :passport_attributes do
{ image: Rack::Test::UploadedFile.new(File.open(passport_image_path)) }
end
let :passport_image_path do
Rails.root.join 'fixtures', 'passport_image_1.jpg'
end
before do
patch "/passports/#{passport.id}", params: { passport: passport_attributes }
end
specify do
expect(response).to redirect_to passport_url passport
end
end