diff --git a/app/assets/stylesheets/admin/styles.sass b/app/assets/stylesheets/admin/styles.sass index 749a772a45ffbb0cfb3d9d11333af732bde1cf0d..2bef76650ede9a2f857930b9aacf0d4c1941a756 100644 --- a/app/assets/stylesheets/admin/styles.sass +++ b/app/assets/stylesheets/admin/styles.sass @@ -1,8 +1,8 @@ h1 - margin-bottom: 30px + margin-bottom: 30px .sidebar-nav .fas - min-width: 20px + min-width: 20px body, body[data-theme=dark] .sidebar-content diff --git a/app/controllers/admin/universities_controller.rb b/app/controllers/admin/universities_controller.rb index e34d9f1cdb18eec7e1176e0e24a266f4d21b4318..8347979a3bc4f4c16da400e578a91629bb4910c3 100644 --- a/app/controllers/admin/universities_controller.rb +++ b/app/controllers/admin/universities_controller.rb @@ -19,37 +19,26 @@ class Admin::UniversitiesController < Admin::ApplicationController end def create - breadcrumb - respond_to do |format| - if @university.save - format.html { redirect_to [:admin, @university], notice: "University was successfully created." } - format.json { render :show, status: :created, location: [:admin, @university] } - else - format.html { render :new, status: :unprocessable_entity } - format.json { render json: @university.errors, status: :unprocessable_entity } - end + if @university.save + redirect_to [:admin, @university], notice: "University was successfully created." + else + breadcrumb + render :new, status: :unprocessable_entity end end def update - breadcrumb - respond_to do |format| - if @university.update(university_params) - format.html { redirect_to [:admin, @university], notice: "University was successfully updated." } - format.json { render :show, status: :ok, location: [:admin, @university] } - else - format.html { render :edit, status: :unprocessable_entity } - format.json { render json: @university.errors, status: :unprocessable_entity } - end + if @university.update(university_params) + redirect_to [:admin, @university], notice: "University was successfully updated." + else + breadcrumb + render :edit, status: :unprocessable_entity end end def destroy @university.destroy - respond_to do |format| - format.html { redirect_to admin_universities_url, notice: "University was successfully destroyed." } - format.json { head :no_content } - end + redirect_to admin_universities_url, notice: "University was successfully destroyed." end protected diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index df453222677a9d136ff395086ea0692a6ea826d5..949ebb8c8b1e70e76673abf237cae98aba6e0cde 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -2,6 +2,7 @@ class Admin::UsersController < Admin::ApplicationController load_and_authorize_resource def index + @users = current_university.users breadcrumb end @@ -20,36 +21,25 @@ class Admin::UsersController < Admin::ApplicationController def create breadcrumb - respond_to do |format| - if @user.save - format.html { redirect_to [:admin, @user], notice: "User was successfully created." } - format.json { render :show, status: :created, location: [:admin, @user] } - else - format.html { render :new, status: :unprocessable_entity } - format.json { render json: @user.errors, status: :unprocessable_entity } - end + if @user.save + redirect_to [:admin, @user], notice: "User was successfully created." + else + render :new, status: :unprocessable_entity end end def update breadcrumb - respond_to do |format| - if @user.update(user_params) - format.html { redirect_to [:admin, @user], notice: "User was successfully updated." } - format.json { render :show, status: :ok, location: [:admin, @user] } - else - format.html { render :edit, status: :unprocessable_entity } - format.json { render json: @user.errors, status: :unprocessable_entity } - end + if @user.update(user_params) + redirect_to [:admin, @user], notice: "User was successfully updated." + else + render :edit, status: :unprocessable_entity end end def destroy @user.destroy - respond_to do |format| - format.html { redirect_to admin_users_url, notice: "User was successfully destroyed." } - format.json { head :no_content } - end + redirect_to admin_users_url, notice: "User was successfully destroyed." end protected diff --git a/app/controllers/users/registrations_controller.rb b/app/controllers/users/registrations_controller.rb new file mode 100644 index 0000000000000000000000000000000000000000..9cbed5e1cb92a58dd441b7341f504dcdbc53dd18 --- /dev/null +++ b/app/controllers/users/registrations_controller.rb @@ -0,0 +1,15 @@ +class Users::RegistrationsController < Devise::RegistrationsController + prepend_before_action :set_university, only: :create + before_action :configure_sign_up_params, only: :create + + protected + + def set_university + return if request.params[:user].nil? + request.params[:user][:university_id] = current_university.id + end + + def configure_sign_up_params + devise_parameter_sanitizer.permit(:sign_up, keys: [:university_id]) + end +end diff --git a/app/controllers/users/sessions_controller.rb b/app/controllers/users/sessions_controller.rb new file mode 100644 index 0000000000000000000000000000000000000000..5871b77906150a601c2ca2e8a5c1f6fef7721436 --- /dev/null +++ b/app/controllers/users/sessions_controller.rb @@ -0,0 +1,15 @@ +class Users::SessionsController < Devise::SessionsController + prepend_before_action :set_university, only: :create + before_action :configure_sign_in_params, only: :create + + protected + + def set_university + return if request.params[:user].nil? + request.params[:user][:university_id] = current_university.id + end + + def configure_sign_in_params + devise_parameter_sanitizer.permit(:sign_in, keys: [:university_id]) + end +end diff --git a/app/models/university.rb b/app/models/university.rb index 80d480cd99eabdc0f5aee6a4a9208a16ab798298..9354058d408771050add1e0ef1e5eb2f92faee42 100644 --- a/app/models/university.rb +++ b/app/models/university.rb @@ -12,13 +12,13 @@ # zipcode :string # created_at :datetime not null # updated_at :datetime not null -# integer_id :bigint # class University < ApplicationRecord validates_presence_of :name scope :ordered, -> { order(:name) } include WithIdentifier + include WithUsers include WithFeatures def to_s diff --git a/app/models/university/with_identifier.rb b/app/models/university/with_identifier.rb index 678144f5a906e6e7d9714f247b4da264e68010ca..04d3a3a846cf37e7e9238e3eba7a425255f70316 100644 --- a/app/models/university/with_identifier.rb +++ b/app/models/university/with_identifier.rb @@ -4,10 +4,8 @@ module University::WithIdentifier included do # TODO restrict to lower case, numbers, -, _ validates :identifier, presence: true, uniqueness: true - end - class_methods do - def with_host(host) + def self.with_host(host) find_by(identifier: extract_identifier_from(host)) || first end @@ -17,7 +15,7 @@ module University::WithIdentifier # Production osuny.osuny.org -> osuny # Staging osuny.osuny.dev -> osuny # Dev osuny.osuny -> osuny - def extract_identifier_from(host) + def self.extract_identifier_from(host) host.remove('.osuny.org') .remove('.osuny.dev') .remove('.osuny') diff --git a/app/models/university/with_users.rb b/app/models/university/with_users.rb new file mode 100644 index 0000000000000000000000000000000000000000..7f81767ca4c7deefbe2e4041569467ab55328cb4 --- /dev/null +++ b/app/models/university/with_users.rb @@ -0,0 +1,7 @@ +module University::WithUsers + extend ActiveSupport::Concern + + included do + has_many :users, dependent: :destroy + end +end diff --git a/app/models/user.rb b/app/models/user.rb index d8935a9c5bd68f629b733a79dab1bb787e173b4a..b9ea0fbf22498ffdf451214f7b6fb247cbde3168 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -25,20 +25,24 @@ # unlock_token :string # created_at :datetime not null # updated_at :datetime not null -# integer_id :bigint +# university_id :uuid not null # # Indexes # -# index_users_on_confirmation_token (confirmation_token) UNIQUE -# index_users_on_email (email) UNIQUE -# index_users_on_reset_password_token (reset_password_token) UNIQUE -# index_users_on_unlock_token (unlock_token) UNIQUE +# index_users_on_confirmation_token (confirmation_token) UNIQUE +# index_users_on_email_and_university_id (email,university_id) UNIQUE +# index_users_on_reset_password_token (reset_password_token) UNIQUE +# index_users_on_university_id (university_id) +# index_users_on_unlock_token (unlock_token) UNIQUE +# +# Foreign Keys +# +# fk_rails_... (university_id => universities.id) # class User < ApplicationRecord - # Include default devise modules. Others available are: - # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable - devise :database_authenticatable, :registerable, - :recoverable, :rememberable, :validatable + include WithDevise + + belongs_to :university def to_s first_name || last_name ? "#{first_name} #{last_name}" diff --git a/app/models/user/with_devise.rb b/app/models/user/with_devise.rb new file mode 100644 index 0000000000000000000000000000000000000000..fcdda620e801eb5d4667dbb5ac7fd8a45ba78ff5 --- /dev/null +++ b/app/models/user/with_devise.rb @@ -0,0 +1,11 @@ +module User::WithDevise + extend ActiveSupport::Concern + + included do + devise :database_authenticatable, :registerable, :recoverable, :rememberable + + def self.find_for_authentication(warden_conditions) + where(email: warden_conditions[:email].downcase, university_id: warden_conditions[:university_id]).first + end + end +end diff --git a/app/views/devise/shared/_links.html.erb b/app/views/devise/shared/_links.html.erb index 96a9412417bf51257684ada2d9410c4e98e857ff..57c971143ee2cbff7a53a9c03c8f27de5c25a1db 100644 --- a/app/views/devise/shared/_links.html.erb +++ b/app/views/devise/shared/_links.html.erb @@ -11,11 +11,11 @@ <% end %> <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %> - <%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %><br /> + <%= link_to "Didn't receive confirmation instructions?", new_user_confirmation_path(resource_name) %><br /> <% end %> <%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %> - <%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br /> + <%= link_to "Didn't receive unlock instructions?", new_user_unlock_path(resource_name) %><br /> <% end %> <%- if devise_mapping.omniauthable? %> diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index 6cba4e7ce6e7ac415851d428fee65e7e16cb62e6..8d9308c9979f8fb0734bd48c849338571fd376b2 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -46,7 +46,7 @@ Devise.setup do |config| # session. If you need permissions, you should implement that in a before filter. # You can also supply a hash where the value is a boolean determining whether # or not authentication should be aborted when the value is not present. - # config.authentication_keys = [:email] + config.authentication_keys = [:email, :university_id] # Configure parameters from the request object used for authentication. Each entry # given should be a request method and it will automatically be passed to the diff --git a/config/routes.rb b/config/routes.rb index 5be3f77b06556572b1190e3cfe0910a772bed60d..5a01e809153319b4e0cb0fd64de15a21a16ee53d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,8 @@ Rails.application.routes.draw do - devise_for :users + devise_for :users, controllers: { + registrations: 'users/registrations', + sessions: 'users/sessions' + } draw 'adminserver' draw 'admin' diff --git a/db/migrate/20210708041914_fix_uuids.rb b/db/migrate/20210708041914_fix_uuids.rb deleted file mode 100644 index 05f4191d01e9f0aba776870c8e4e1bc3ea83113d..0000000000000000000000000000000000000000 --- a/db/migrate/20210708041914_fix_uuids.rb +++ /dev/null @@ -1,25 +0,0 @@ -class FixUuids < ActiveRecord::Migration[6.1] - def up - add_column :users, :uuid, :uuid, default: "gen_random_uuid()", null: false - rename_column :users, :id, :integer_id - rename_column :users, :uuid, :id - execute "ALTER TABLE users drop constraint users_pkey;" - execute "ALTER TABLE users ADD PRIMARY KEY (id);" - execute "ALTER TABLE ONLY users ALTER COLUMN integer_id DROP DEFAULT;" - change_column_null :users, :integer_id, true - execute "DROP SEQUENCE IF EXISTS users_id_seq" - - add_column :universities, :uuid, :uuid, default: "gen_random_uuid()", null: false - rename_column :universities, :id, :integer_id - rename_column :universities, :uuid, :id - execute "ALTER TABLE universities drop constraint universities_pkey;" - execute "ALTER TABLE universities ADD PRIMARY KEY (id);" - execute "ALTER TABLE ONLY universities ALTER COLUMN integer_id DROP DEFAULT;" - change_column_null :universities, :integer_id, true - execute "DROP SEQUENCE IF EXISTS universities_id_seq" - end - - def down - raise ActiveRecord::IrreversibleMigration - end -end diff --git a/db/migrate/20210708052012_add_fields_to_programs.rb b/db/migrate/20210708052012_add_fields_to_programs.rb deleted file mode 100644 index 024a496e251e741ffe524c022a199c8461dfa310..0000000000000000000000000000000000000000 --- a/db/migrate/20210708052012_add_fields_to_programs.rb +++ /dev/null @@ -1,6 +0,0 @@ -class AddFieldsToPrograms < ActiveRecord::Migration[6.1] - def change - add_column :programs, :pricing, :text - add_column :programs, :contacts, :text - end -end diff --git a/db/migrate/20210708041644_enable_uuid.rb b/db/migrate/20210801041644_enable_uuid.rb similarity index 100% rename from db/migrate/20210708041644_enable_uuid.rb rename to db/migrate/20210801041644_enable_uuid.rb diff --git a/db/migrate/20210701043544_create_universities.rb b/db/migrate/20210801043544_create_universities.rb similarity index 76% rename from db/migrate/20210701043544_create_universities.rb rename to db/migrate/20210801043544_create_universities.rb index fbc9770b5f3d733fb978f4cca89706e7747159cc..0a30e73fa4e54abbf399730ceb734c36b4af7166 100644 --- a/db/migrate/20210701043544_create_universities.rb +++ b/db/migrate/20210801043544_create_universities.rb @@ -1,7 +1,8 @@ class CreateUniversities < ActiveRecord::Migration[6.1] def change - create_table :universities do |t| + create_table :universities, id: :uuid do |t| t.string :name + t.string :identifier t.string :address t.string :zipcode t.string :city diff --git a/db/migrate/20210701043712_devise_create_users.rb b/db/migrate/20210801043712_devise_create_users.rb similarity index 76% rename from db/migrate/20210701043712_devise_create_users.rb rename to db/migrate/20210801043712_devise_create_users.rb index dc90a460afc6b734b69429024dbc31516cd8774b..2cbe92285c101068eb30635158d9a636e2915f83 100644 --- a/db/migrate/20210701043712_devise_create_users.rb +++ b/db/migrate/20210801043712_devise_create_users.rb @@ -2,7 +2,9 @@ class DeviseCreateUsers < ActiveRecord::Migration[6.1] def change - create_table :users do |t| + create_table :users, id: :uuid do |t| + t.references :university, null: false, foreign_key: true, type: :uuid + t.string :first_name t.string :last_name t.integer :role @@ -39,9 +41,9 @@ class DeviseCreateUsers < ActiveRecord::Migration[6.1] t.timestamps null: false end - add_index :users, :email, unique: true - add_index :users, :reset_password_token, unique: true - add_index :users, :confirmation_token, unique: true - add_index :users, :unlock_token, unique: true + add_index :users, [:email, :university_id], unique: true + add_index :users, :reset_password_token, unique: true + add_index :users, :confirmation_token, unique: true + add_index :users, :unlock_token, unique: true end end diff --git a/db/migrate/20210708043034_create_programs.rb b/db/migrate/20210808043034_create_programs.rb similarity index 81% rename from db/migrate/20210708043034_create_programs.rb rename to db/migrate/20210808043034_create_programs.rb index 801b6d9617403629ae5710ca16d2aa1c8c5ccf22..df9c7eb456babb3c8fc07615c21fd8d6fe4f690b 100644 --- a/db/migrate/20210708043034_create_programs.rb +++ b/db/migrate/20210808043034_create_programs.rb @@ -1,6 +1,6 @@ class CreatePrograms < ActiveRecord::Migration[6.1] def change - create_table :programs, id: :uuid do |t| + create_table :features_education_programs, id: :uuid do |t| t.references :university, null: false, foreign_key: true, type: :uuid t.string :name t.integer :level @@ -14,6 +14,8 @@ class CreatePrograms < ActiveRecord::Migration[6.1] t.text :pedagogy t.text :evaluation t.text :accessibility + t.text :pricing + t.text :contacts t.timestamps end diff --git a/db/migrate/20210708122438_create_qualiopi_criterions.rb b/db/migrate/20210808122438_create_qualiopi_criterions.rb similarity index 70% rename from db/migrate/20210708122438_create_qualiopi_criterions.rb rename to db/migrate/20210808122438_create_qualiopi_criterions.rb index fa80b36e2e324674dd6aeb77a6005c851cbca2c0..9608675818a0bbb6af9dbcc6434b855caad194b9 100644 --- a/db/migrate/20210708122438_create_qualiopi_criterions.rb +++ b/db/migrate/20210808122438_create_qualiopi_criterions.rb @@ -1,6 +1,6 @@ class CreateQualiopiCriterions < ActiveRecord::Migration[6.1] def change - create_table :qualiopi_criterions, id: :uuid do |t| + create_table :features_education_qualiopi_criterions, id: :uuid do |t| t.integer :number t.text :name t.text :description diff --git a/db/migrate/20210708122519_create_qualiopi_indicators.rb b/db/migrate/20210808122519_create_qualiopi_indicators.rb similarity index 70% rename from db/migrate/20210708122519_create_qualiopi_indicators.rb rename to db/migrate/20210808122519_create_qualiopi_indicators.rb index 24481f58a39de60a94c6f5e8cd62d672f75ce00f..d296f3c78de21606b4b752f8fed228e5f9338f04 100644 --- a/db/migrate/20210708122519_create_qualiopi_indicators.rb +++ b/db/migrate/20210808122519_create_qualiopi_indicators.rb @@ -1,7 +1,7 @@ class CreateQualiopiIndicators < ActiveRecord::Migration[6.1] def change - create_table :qualiopi_indicators, id: :uuid do |t| - t.references :criterion, null: false, foreign_key: {to_table: :qualiopi_criterions}, type: :uuid + create_table :features_education_qualiopi_indicators, id: :uuid do |t| + t.references :criterion, null: false, foreign_key: {to_table: :features_education_qualiopi_criterions}, type: :uuid t.integer :number t.text :name t.text :level_expected diff --git a/db/migrate/20210809084645_add_identifier_to_university.rb b/db/migrate/20210809084645_add_identifier_to_university.rb deleted file mode 100644 index 149203d29713bf7e84061c899d3a0911da33d895..0000000000000000000000000000000000000000 --- a/db/migrate/20210809084645_add_identifier_to_university.rb +++ /dev/null @@ -1,5 +0,0 @@ -class AddIdentifierToUniversity < ActiveRecord::Migration[6.1] - def change - add_column :universities, :identifier, :string - end -end diff --git a/db/migrate/20210811082802_namespace_features.rb b/db/migrate/20210811082802_namespace_features.rb deleted file mode 100644 index 81ff89fb80f6d5e23d2337bcf4a137a8d25f8135..0000000000000000000000000000000000000000 --- a/db/migrate/20210811082802_namespace_features.rb +++ /dev/null @@ -1,7 +0,0 @@ -class NamespaceFeatures < ActiveRecord::Migration[6.1] - def change - rename_table :programs, :features_education_programs - rename_table :qualiopi_indicators, :features_education_qualiopi_indicators - rename_table :qualiopi_criterions, :features_education_qualiopi_criterions - end -end diff --git a/db/schema.rb b/db/schema.rb index 631bea021b6a03871339e6fc0c6f764ba6fd0030..99bb8102e04def062a9912d88d1c32c7e5423499 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -30,10 +30,10 @@ ActiveRecord::Schema.define(version: 2021_08_11_102819) do t.text "pedagogy" t.text "evaluation" t.text "accessibility" - t.datetime "created_at", precision: 6, null: false - t.datetime "updated_at", precision: 6, null: false t.text "pricing" t.text "contacts" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false t.index ["university_id"], name: "index_features_education_programs_on_university_id" end @@ -68,8 +68,8 @@ ActiveRecord::Schema.define(version: 2021_08_11_102819) do end create_table "universities", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| - t.bigint "integer_id" t.string "name" + t.string "identifier" t.string "address" t.string "zipcode" t.string "city" @@ -77,11 +77,10 @@ ActiveRecord::Schema.define(version: 2021_08_11_102819) do t.boolean "private" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false - t.string "identifier" end create_table "users", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| - t.bigint "integer_id" + t.uuid "university_id", null: false t.string "first_name" t.string "last_name" t.integer "role" @@ -105,12 +104,14 @@ ActiveRecord::Schema.define(version: 2021_08_11_102819) do t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true - t.index ["email"], name: "index_users_on_email", unique: true + t.index ["email", "university_id"], name: "index_users_on_email_and_university_id", unique: true t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true + t.index ["university_id"], name: "index_users_on_university_id" t.index ["unlock_token"], name: "index_users_on_unlock_token", unique: true end add_foreign_key "features_education_programs", "universities" add_foreign_key "features_education_qualiopi_indicators", "features_education_qualiopi_criterions", column: "criterion_id" add_foreign_key "features_websites_sites", "universities" + add_foreign_key "users", "universities" end diff --git a/db/seeds.rb b/db/seeds.rb index f3a0480d189d6930abb202b3504041eb6d623b03..2c7336dfae3b18ff8775035251e1786664993ad4 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -1,7 +1 @@ -# This file should contain all the record creation needed to seed the database with its default values. -# The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup). -# -# Examples: -# -# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) -# Character.create(name: 'Luke', movie: movies.first) +University.create name: 'Osuny', identifier: 'osuny' diff --git a/test/fixtures/universities.yml b/test/fixtures/universities.yml index 60abd2d59105a5d07d8b720cf570512bc146dc06..44db33a42f8e554b8158d562fbd336701118d1f0 100644 --- a/test/fixtures/universities.yml +++ b/test/fixtures/universities.yml @@ -12,7 +12,6 @@ # zipcode :string # created_at :datetime not null # updated_at :datetime not null -# integer_id :bigint # one: diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml index fe5dff24c189369e554cb1064f85bddecf55db82..e99a055886fe78267ef02f78e151d6d4909edf78 100644 --- a/test/fixtures/users.yml +++ b/test/fixtures/users.yml @@ -25,14 +25,19 @@ # unlock_token :string # created_at :datetime not null # updated_at :datetime not null -# integer_id :bigint +# university_id :uuid not null # # Indexes # -# index_users_on_confirmation_token (confirmation_token) UNIQUE -# index_users_on_email (email) UNIQUE -# index_users_on_reset_password_token (reset_password_token) UNIQUE -# index_users_on_unlock_token (unlock_token) UNIQUE +# index_users_on_confirmation_token (confirmation_token) UNIQUE +# index_users_on_email_and_university_id (email,university_id) UNIQUE +# index_users_on_reset_password_token (reset_password_token) UNIQUE +# index_users_on_university_id (university_id) +# index_users_on_unlock_token (unlock_token) UNIQUE +# +# Foreign Keys +# +# fk_rails_... (university_id => universities.id) # # This model initially had no columns defined. If you add columns to the diff --git a/test/models/university_test.rb b/test/models/university_test.rb index 1960b952e31332a69aeb5e671fcc50fcfdf8b94d..dac831a2e064651336b5f2d88677b78d920615bb 100644 --- a/test/models/university_test.rb +++ b/test/models/university_test.rb @@ -12,7 +12,6 @@ # zipcode :string # created_at :datetime not null # updated_at :datetime not null -# integer_id :bigint # require "test_helper" diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 8ea003217f2671a30495f0cf80e2de30851c3dac..a54213fd1a8085abd7fc07d343150fe2e82e388d 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -25,14 +25,19 @@ # unlock_token :string # created_at :datetime not null # updated_at :datetime not null -# integer_id :bigint +# university_id :uuid not null # # Indexes # -# index_users_on_confirmation_token (confirmation_token) UNIQUE -# index_users_on_email (email) UNIQUE -# index_users_on_reset_password_token (reset_password_token) UNIQUE -# index_users_on_unlock_token (unlock_token) UNIQUE +# index_users_on_confirmation_token (confirmation_token) UNIQUE +# index_users_on_email_and_university_id (email,university_id) UNIQUE +# index_users_on_reset_password_token (reset_password_token) UNIQUE +# index_users_on_university_id (university_id) +# index_users_on_unlock_token (unlock_token) UNIQUE +# +# Foreign Keys +# +# fk_rails_... (university_id => universities.id) # require "test_helper"