Une première ressource "users"
This commit is contained in:
parent
f5de02263e
commit
3931eb05e0
2
Gemfile
2
Gemfile
@ -43,3 +43,5 @@ end
|
|||||||
|
|
||||||
# Use debugger
|
# Use debugger
|
||||||
# gem 'debugger', group: [:development, :test]
|
# gem 'debugger', group: [:development, :test]
|
||||||
|
|
||||||
|
gem 'haml-rails', '>= 0.3.4', group: :development
|
||||||
|
127
Gemfile.lock
Normal file
127
Gemfile.lock
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
actionmailer (4.0.1)
|
||||||
|
actionpack (= 4.0.1)
|
||||||
|
mail (~> 2.5.4)
|
||||||
|
actionpack (4.0.1)
|
||||||
|
activesupport (= 4.0.1)
|
||||||
|
builder (~> 3.1.0)
|
||||||
|
erubis (~> 2.7.0)
|
||||||
|
rack (~> 1.5.2)
|
||||||
|
rack-test (~> 0.6.2)
|
||||||
|
activemodel (4.0.1)
|
||||||
|
activesupport (= 4.0.1)
|
||||||
|
builder (~> 3.1.0)
|
||||||
|
activerecord (4.0.1)
|
||||||
|
activemodel (= 4.0.1)
|
||||||
|
activerecord-deprecated_finders (~> 1.0.2)
|
||||||
|
activesupport (= 4.0.1)
|
||||||
|
arel (~> 4.0.0)
|
||||||
|
activerecord-deprecated_finders (1.0.3)
|
||||||
|
activesupport (4.0.1)
|
||||||
|
i18n (~> 0.6, >= 0.6.4)
|
||||||
|
minitest (~> 4.2)
|
||||||
|
multi_json (~> 1.3)
|
||||||
|
thread_safe (~> 0.1)
|
||||||
|
tzinfo (~> 0.3.37)
|
||||||
|
arel (4.0.1)
|
||||||
|
atomic (1.1.14)
|
||||||
|
builder (3.1.4)
|
||||||
|
coffee-rails (4.0.1)
|
||||||
|
coffee-script (>= 2.2.0)
|
||||||
|
railties (>= 4.0.0, < 5.0)
|
||||||
|
coffee-script (2.2.0)
|
||||||
|
coffee-script-source
|
||||||
|
execjs
|
||||||
|
coffee-script-source (1.6.3)
|
||||||
|
erubis (2.7.0)
|
||||||
|
execjs (2.0.2)
|
||||||
|
haml (4.0.4)
|
||||||
|
tilt
|
||||||
|
haml-rails (0.4)
|
||||||
|
actionpack (>= 3.1, < 4.1)
|
||||||
|
activesupport (>= 3.1, < 4.1)
|
||||||
|
haml (>= 3.1, < 4.1)
|
||||||
|
railties (>= 3.1, < 4.1)
|
||||||
|
hike (1.2.3)
|
||||||
|
i18n (0.6.5)
|
||||||
|
jbuilder (1.5.2)
|
||||||
|
activesupport (>= 3.0.0)
|
||||||
|
multi_json (>= 1.2.0)
|
||||||
|
jquery-rails (3.0.4)
|
||||||
|
railties (>= 3.0, < 5.0)
|
||||||
|
thor (>= 0.14, < 2.0)
|
||||||
|
json (1.8.1)
|
||||||
|
mail (2.5.4)
|
||||||
|
mime-types (~> 1.16)
|
||||||
|
treetop (~> 1.4.8)
|
||||||
|
mime-types (1.25)
|
||||||
|
minitest (4.7.5)
|
||||||
|
multi_json (1.8.2)
|
||||||
|
mysql2 (0.3.14)
|
||||||
|
polyglot (0.3.3)
|
||||||
|
rack (1.5.2)
|
||||||
|
rack-test (0.6.2)
|
||||||
|
rack (>= 1.0)
|
||||||
|
rails (4.0.1)
|
||||||
|
actionmailer (= 4.0.1)
|
||||||
|
actionpack (= 4.0.1)
|
||||||
|
activerecord (= 4.0.1)
|
||||||
|
activesupport (= 4.0.1)
|
||||||
|
bundler (>= 1.3.0, < 2.0)
|
||||||
|
railties (= 4.0.1)
|
||||||
|
sprockets-rails (~> 2.0.0)
|
||||||
|
railties (4.0.1)
|
||||||
|
actionpack (= 4.0.1)
|
||||||
|
activesupport (= 4.0.1)
|
||||||
|
rake (>= 0.8.7)
|
||||||
|
thor (>= 0.18.1, < 2.0)
|
||||||
|
rake (10.1.0)
|
||||||
|
rdoc (3.12.2)
|
||||||
|
json (~> 1.4)
|
||||||
|
sass (3.2.12)
|
||||||
|
sass-rails (4.0.1)
|
||||||
|
railties (>= 4.0.0, < 5.0)
|
||||||
|
sass (>= 3.1.10)
|
||||||
|
sprockets-rails (~> 2.0.0)
|
||||||
|
sdoc (0.3.20)
|
||||||
|
json (>= 1.1.3)
|
||||||
|
rdoc (~> 3.10)
|
||||||
|
sprockets (2.10.0)
|
||||||
|
hike (~> 1.2)
|
||||||
|
multi_json (~> 1.0)
|
||||||
|
rack (~> 1.0)
|
||||||
|
tilt (~> 1.1, != 1.3.0)
|
||||||
|
sprockets-rails (2.0.1)
|
||||||
|
actionpack (>= 3.0)
|
||||||
|
activesupport (>= 3.0)
|
||||||
|
sprockets (~> 2.8)
|
||||||
|
thor (0.18.1)
|
||||||
|
thread_safe (0.1.3)
|
||||||
|
atomic
|
||||||
|
tilt (1.4.1)
|
||||||
|
treetop (1.4.15)
|
||||||
|
polyglot
|
||||||
|
polyglot (>= 0.3.1)
|
||||||
|
turbolinks (1.3.0)
|
||||||
|
coffee-rails
|
||||||
|
tzinfo (0.3.38)
|
||||||
|
uglifier (2.3.1)
|
||||||
|
execjs (>= 0.3.0)
|
||||||
|
json (>= 1.8.0)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
ruby
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
coffee-rails (~> 4.0.0)
|
||||||
|
haml-rails (>= 0.3.4)
|
||||||
|
jbuilder (~> 1.2)
|
||||||
|
jquery-rails
|
||||||
|
mysql2
|
||||||
|
rails (= 4.0.1)
|
||||||
|
sass-rails (~> 4.0.0)
|
||||||
|
sdoc
|
||||||
|
turbolinks
|
||||||
|
uglifier (>= 1.3.0)
|
3
app/assets/javascripts/users.js.coffee
Normal file
3
app/assets/javascripts/users.js.coffee
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# Place all the behaviors and hooks related to the matching controller here.
|
||||||
|
# All this logic will automatically be available in application.js.
|
||||||
|
# You can use CoffeeScript in this file: http://coffeescript.org/
|
3
app/assets/stylesheets/users.css.sass
Normal file
3
app/assets/stylesheets/users.css.sass
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
// Place all the styles related to the users controller here.
|
||||||
|
// They will automatically be included in application.css.
|
||||||
|
// You can use Sass (SCSS) here: http://sass-lang.com/
|
74
app/controllers/users_controller.rb
Normal file
74
app/controllers/users_controller.rb
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
class UsersController < ApplicationController
|
||||||
|
before_action :set_user, only: [:show, :edit, :update, :destroy]
|
||||||
|
|
||||||
|
# GET /users
|
||||||
|
# GET /users.json
|
||||||
|
def index
|
||||||
|
@users = User.all
|
||||||
|
end
|
||||||
|
|
||||||
|
# GET /users/1
|
||||||
|
# GET /users/1.json
|
||||||
|
def show
|
||||||
|
end
|
||||||
|
|
||||||
|
# GET /users/new
|
||||||
|
def new
|
||||||
|
@user = User.new
|
||||||
|
end
|
||||||
|
|
||||||
|
# GET /users/1/edit
|
||||||
|
def edit
|
||||||
|
end
|
||||||
|
|
||||||
|
# POST /users
|
||||||
|
# POST /users.json
|
||||||
|
def create
|
||||||
|
@user = User.new(user_params)
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
if @user.save
|
||||||
|
format.html { redirect_to @user, notice: 'User was successfully created.' }
|
||||||
|
format.json { render action: 'show', status: :created, location: @user }
|
||||||
|
else
|
||||||
|
format.html { render action: 'new' }
|
||||||
|
format.json { render json: @user.errors, status: :unprocessable_entity }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# PATCH/PUT /users/1
|
||||||
|
# PATCH/PUT /users/1.json
|
||||||
|
def update
|
||||||
|
respond_to do |format|
|
||||||
|
if @user.update(user_params)
|
||||||
|
format.html { redirect_to @user, notice: 'User was successfully updated.' }
|
||||||
|
format.json { head :no_content }
|
||||||
|
else
|
||||||
|
format.html { render action: 'edit' }
|
||||||
|
format.json { render json: @user.errors, status: :unprocessable_entity }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# DELETE /users/1
|
||||||
|
# DELETE /users/1.json
|
||||||
|
def destroy
|
||||||
|
@user.destroy
|
||||||
|
respond_to do |format|
|
||||||
|
format.html { redirect_to users_url }
|
||||||
|
format.json { head :no_content }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
# Use callbacks to share common setup or constraints between actions.
|
||||||
|
def set_user
|
||||||
|
@user = User.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
# Never trust parameters from the scary internet, only allow the white list through.
|
||||||
|
def user_params
|
||||||
|
params.require(:user).permit(:login, :email, :lastname, :firstname)
|
||||||
|
end
|
||||||
|
end
|
2
app/helpers/users_helper.rb
Normal file
2
app/helpers/users_helper.rb
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
module UsersHelper
|
||||||
|
end
|
2
app/models/user.rb
Normal file
2
app/models/user.rb
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
class User < ActiveRecord::Base
|
||||||
|
end
|
22
app/views/users/_form.html.haml
Normal file
22
app/views/users/_form.html.haml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
= form_for @user do |f|
|
||||||
|
- if @user.errors.any?
|
||||||
|
#error_explanation
|
||||||
|
%h2= "#{pluralize(@user.errors.count, "error")} prohibited this user from being saved:"
|
||||||
|
%ul
|
||||||
|
- @user.errors.full_messages.each do |msg|
|
||||||
|
%li= msg
|
||||||
|
|
||||||
|
.field
|
||||||
|
= f.label :login
|
||||||
|
= f.text_field :login
|
||||||
|
.field
|
||||||
|
= f.label :email
|
||||||
|
= f.text_field :email
|
||||||
|
.field
|
||||||
|
= f.label :lastname
|
||||||
|
= f.text_field :lastname
|
||||||
|
.field
|
||||||
|
= f.label :firstname
|
||||||
|
= f.text_field :firstname
|
||||||
|
.actions
|
||||||
|
= f.submit 'Save'
|
7
app/views/users/edit.html.haml
Normal file
7
app/views/users/edit.html.haml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
%h1 Editing user
|
||||||
|
|
||||||
|
= render 'form'
|
||||||
|
|
||||||
|
= link_to 'Show', @user
|
||||||
|
\|
|
||||||
|
= link_to 'Back', users_path
|
25
app/views/users/index.html.haml
Normal file
25
app/views/users/index.html.haml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
%h1 Listing users
|
||||||
|
|
||||||
|
%table
|
||||||
|
%tr
|
||||||
|
%th Login
|
||||||
|
%th Email
|
||||||
|
%th Lastname
|
||||||
|
%th Firstname
|
||||||
|
%th
|
||||||
|
%th
|
||||||
|
%th
|
||||||
|
|
||||||
|
- @users.each do |user|
|
||||||
|
%tr
|
||||||
|
%td= user.login
|
||||||
|
%td= user.email
|
||||||
|
%td= user.lastname
|
||||||
|
%td= user.firstname
|
||||||
|
%td= link_to 'Show', user
|
||||||
|
%td= link_to 'Edit', edit_user_path(user)
|
||||||
|
%td= link_to 'Destroy', user, :method => :delete, :data => { :confirm => 'Are you sure?' }
|
||||||
|
|
||||||
|
%br
|
||||||
|
|
||||||
|
= link_to 'New User', new_user_path
|
4
app/views/users/index.json.jbuilder
Normal file
4
app/views/users/index.json.jbuilder
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
json.array!(@users) do |user|
|
||||||
|
json.extract! user, :login, :email, :lastname, :firstname
|
||||||
|
json.url user_url(user, format: :json)
|
||||||
|
end
|
5
app/views/users/new.html.haml
Normal file
5
app/views/users/new.html.haml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
%h1 New user
|
||||||
|
|
||||||
|
= render 'form'
|
||||||
|
|
||||||
|
= link_to 'Back', users_path
|
18
app/views/users/show.html.haml
Normal file
18
app/views/users/show.html.haml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
%p#notice= notice
|
||||||
|
|
||||||
|
%p
|
||||||
|
%b Login:
|
||||||
|
= @user.login
|
||||||
|
%p
|
||||||
|
%b Email:
|
||||||
|
= @user.email
|
||||||
|
%p
|
||||||
|
%b Lastname:
|
||||||
|
= @user.lastname
|
||||||
|
%p
|
||||||
|
%b Firstname:
|
||||||
|
= @user.firstname
|
||||||
|
|
||||||
|
= link_to 'Edit', edit_user_path(@user)
|
||||||
|
\|
|
||||||
|
= link_to 'Back', users_path
|
1
app/views/users/show.json.jbuilder
Normal file
1
app/views/users/show.json.jbuilder
Normal file
@ -0,0 +1 @@
|
|||||||
|
json.extract! @user, :login, :email, :lastname, :firstname, :created_at, :updated_at
|
@ -1,4 +1,6 @@
|
|||||||
AgendaDuLibreRails::Application.routes.draw do
|
AgendaDuLibreRails::Application.routes.draw do
|
||||||
|
resources :users
|
||||||
|
|
||||||
# The priority is based upon order of creation: first created -> highest priority.
|
# The priority is based upon order of creation: first created -> highest priority.
|
||||||
# See how all your routes lay out with "rake routes".
|
# See how all your routes lay out with "rake routes".
|
||||||
|
|
||||||
|
77
db/schema.rb
Normal file
77
db/schema.rb
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
# encoding: UTF-8
|
||||||
|
# This file is auto-generated from the current state of the database. Instead
|
||||||
|
# of editing this file, please use the migrations feature of Active Record to
|
||||||
|
# incrementally modify your database, and then regenerate this schema definition.
|
||||||
|
#
|
||||||
|
# Note that this schema.rb definition is the authoritative source for your
|
||||||
|
# database schema. If you need to create the application database on another
|
||||||
|
# system, you should be using db:schema:load, not running all the migrations
|
||||||
|
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
||||||
|
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
||||||
|
#
|
||||||
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
|
ActiveRecord::Schema.define(version: 0) do
|
||||||
|
|
||||||
|
create_table "cities", force: true do |t|
|
||||||
|
t.string "name", default: "", null: false
|
||||||
|
t.string "majname", default: "", null: false
|
||||||
|
t.integer "postalcode"
|
||||||
|
t.integer "inseecode"
|
||||||
|
t.integer "regioncode"
|
||||||
|
t.float "latitude"
|
||||||
|
t.float "longitude"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "cities", ["name"], name: "cities_name", using: :btree
|
||||||
|
|
||||||
|
create_table "events", force: true do |t|
|
||||||
|
t.string "title", default: "", null: false
|
||||||
|
t.text "description", null: false
|
||||||
|
t.datetime "start_time", null: false
|
||||||
|
t.datetime "end_time", null: false
|
||||||
|
t.string "city", default: "", null: false
|
||||||
|
t.integer "region", default: 0, null: false
|
||||||
|
t.integer "locality", default: 0, null: false
|
||||||
|
t.string "url", default: "", null: false
|
||||||
|
t.string "contact", default: "", null: false
|
||||||
|
t.string "submitter", default: "", null: false
|
||||||
|
t.integer "moderated", default: 0, null: false
|
||||||
|
t.string "tags", default: "", null: false
|
||||||
|
t.string "secret", default: "", null: false
|
||||||
|
t.datetime "decision_time", null: false
|
||||||
|
t.datetime "submission_time", null: false
|
||||||
|
t.string "moderator_mail_id", limit: 32
|
||||||
|
t.string "submitter_mail_id", limit: 32
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "events", ["start_time", "end_time"], name: "events_date", using: :btree
|
||||||
|
|
||||||
|
create_table "lugs", force: true do |t|
|
||||||
|
t.integer "region", default: 0, null: false
|
||||||
|
t.integer "department", default: 0, null: false
|
||||||
|
t.string "name", default: "", null: false
|
||||||
|
t.string "url", default: "", null: false
|
||||||
|
t.string "city", default: "", null: false
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "notes", force: true do |t|
|
||||||
|
t.text "contents", null: false
|
||||||
|
t.datetime "date", null: false
|
||||||
|
t.integer "event_id"
|
||||||
|
t.integer "author_id"
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "regions", force: true do |t|
|
||||||
|
t.string "name", default: "", null: false
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "users", force: true do |t|
|
||||||
|
t.string "login", default: "", null: false
|
||||||
|
t.string "password", default: "", null: false
|
||||||
|
t.string "email", default: "", null: false
|
||||||
|
t.string "lastname", default: "", null: false
|
||||||
|
t.string "firstname", default: "", null: false
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
49
test/controllers/users_controller_test.rb
Normal file
49
test/controllers/users_controller_test.rb
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class UsersControllerTest < ActionController::TestCase
|
||||||
|
setup do
|
||||||
|
@user = users(:one)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "should get index" do
|
||||||
|
get :index
|
||||||
|
assert_response :success
|
||||||
|
assert_not_nil assigns(:users)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "should get new" do
|
||||||
|
get :new
|
||||||
|
assert_response :success
|
||||||
|
end
|
||||||
|
|
||||||
|
test "should create user" do
|
||||||
|
assert_difference('User.count') do
|
||||||
|
post :create, user: { email: @user.email, firstname: @user.firstname, lastname: @user.lastname, login: @user.login }
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_redirected_to user_path(assigns(:user))
|
||||||
|
end
|
||||||
|
|
||||||
|
test "should show user" do
|
||||||
|
get :show, id: @user
|
||||||
|
assert_response :success
|
||||||
|
end
|
||||||
|
|
||||||
|
test "should get edit" do
|
||||||
|
get :edit, id: @user
|
||||||
|
assert_response :success
|
||||||
|
end
|
||||||
|
|
||||||
|
test "should update user" do
|
||||||
|
patch :update, id: @user, user: { email: @user.email, firstname: @user.firstname, lastname: @user.lastname, login: @user.login }
|
||||||
|
assert_redirected_to user_path(assigns(:user))
|
||||||
|
end
|
||||||
|
|
||||||
|
test "should destroy user" do
|
||||||
|
assert_difference('User.count', -1) do
|
||||||
|
delete :destroy, id: @user
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_redirected_to users_path
|
||||||
|
end
|
||||||
|
end
|
11
test/fixtures/users.yml
vendored
Normal file
11
test/fixtures/users.yml
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||||
|
|
||||||
|
# This model initially had no columns defined. If you add columns to the
|
||||||
|
# model remove the '{}' from the fixture names and add the columns immediately
|
||||||
|
# below each fixture, per the syntax in the comments below
|
||||||
|
#
|
||||||
|
one: {}
|
||||||
|
# column: value
|
||||||
|
#
|
||||||
|
two: {}
|
||||||
|
# column: value
|
4
test/helpers/users_helper_test.rb
Normal file
4
test/helpers/users_helper_test.rb
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class UsersHelperTest < ActionView::TestCase
|
||||||
|
end
|
7
test/models/user_test.rb
Normal file
7
test/models/user_test.rb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class UserTest < ActiveSupport::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user