adds responsible_name to organizations
This commit is contained in:
@@ -29,7 +29,7 @@ class Organizations::RegistrationsController < Devise::RegistrationsController
|
||||
private
|
||||
|
||||
def sign_up_params
|
||||
params.require(:user).permit(:email, :password, :phone_number, :password_confirmation, :captcha, :captcha_key, :terms_of_service, organization_attributes: [:name])
|
||||
params.require(:user).permit(:email, :password, :phone_number, :password_confirmation, :captcha, :captcha_key, :terms_of_service, organization_attributes: [:name, :responsible_name])
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -4,6 +4,8 @@ class Organization < ActiveRecord::Base
|
||||
validates :name, presence: true
|
||||
validates :name, uniqueness: true
|
||||
validate :validate_name_length
|
||||
validates :responsible_name, presence: true
|
||||
validate :validate_responsible_name_length
|
||||
|
||||
delegate :email, :phone_number, to: :user
|
||||
|
||||
@@ -37,6 +39,10 @@ class Organization < ActiveRecord::Base
|
||||
@@name_max_length ||= self.columns.find { |c| c.name == 'name' }.limit || 60
|
||||
end
|
||||
|
||||
def self.responsible_name_max_length
|
||||
@@responsible_name_max_length ||= self.columns.find { |c| c.name == 'responsible_name' }.limit || 60
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def validate_name_length
|
||||
@@ -46,4 +52,11 @@ class Organization < ActiveRecord::Base
|
||||
validator.validate(self)
|
||||
end
|
||||
|
||||
def validate_responsible_name_length
|
||||
validator = ActiveModel::Validations::LengthValidator.new(
|
||||
attributes: :responsible_name,
|
||||
maximum: Organization.responsible_name_max_length)
|
||||
validator.validate(self)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
|
||||
<%= f.fields_for :organization do |fo| %>
|
||||
<%= fo.text_field :name, autofocus: true, maxlength: Organization.name_max_length, placeholder: t("devise_views.organizations.registrations.new.organization_name_label") %>
|
||||
<%= fo.label t("devise_views.organizations.registrations.new.responsible_name_label") %>
|
||||
<span class="note"><%= t("devise_views.organizations.registrations.new.responsible_name_note") %></span>
|
||||
<%= fo.text_field :responsible_name, maxlength: Organization.responsible_name_max_length, label: false %>
|
||||
<% end %>
|
||||
|
||||
<%= f.email_field :email, placeholder: t("devise_views.organizations.registrations.new.email_label") %>
|
||||
|
||||
@@ -25,3 +25,4 @@ en:
|
||||
official_level: Official level
|
||||
organization:
|
||||
name: Organization name
|
||||
responsible_name: Person in charge
|
||||
|
||||
@@ -25,3 +25,4 @@ es:
|
||||
official_level: Nivel del cargo
|
||||
organization:
|
||||
name: Nombre de organización
|
||||
responsible_name: Persona responsable del colectivo
|
||||
|
||||
@@ -74,6 +74,8 @@ en:
|
||||
new:
|
||||
title: "Sign up as organization / collective"
|
||||
organization_name_label: "Organization name"
|
||||
responsible_name_label: "Name and surname of the person in charge"
|
||||
responsible_name_note: "The responsible representative of the organization"
|
||||
email_label: "Email"
|
||||
password_label: "Password"
|
||||
phone_number_label: "Phone number"
|
||||
|
||||
@@ -74,6 +74,8 @@ es:
|
||||
new:
|
||||
title: "Registrarse como organización / colectivo"
|
||||
organization_name_label: "Nombre de la organización"
|
||||
responsible_name_label: "Nombre y apellidos de la persona responsable del colectivo"
|
||||
responsible_name_note: "Será la persona representante de la asociación/colectivo en cuyo nombre se presenten las propuestas"
|
||||
email_label: "Email"
|
||||
password_label: "Contraseña"
|
||||
phone_number_label: "Teléfono"
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
class AddResponsibleNameToOrganizations < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :organizations, :responsible_name, :string, limit: 60
|
||||
end
|
||||
end
|
||||
23
db/schema.rb
23
db/schema.rb
@@ -11,7 +11,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20150910152734) do
|
||||
ActiveRecord::Schema.define(version: 20150912145218) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
@@ -165,7 +165,7 @@ ActiveRecord::Schema.define(version: 20150910152734) do
|
||||
create_table "locks", force: :cascade do |t|
|
||||
t.integer "user_id"
|
||||
t.integer "tries", default: 0
|
||||
t.datetime "locked_until", default: '2015-09-10 13:46:11', null: false
|
||||
t.datetime "locked_until", default: '2015-09-11 17:24:30', null: false
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
end
|
||||
@@ -183,10 +183,29 @@ ActiveRecord::Schema.define(version: 20150910152734) do
|
||||
t.string "name", limit: 60
|
||||
t.datetime "verified_at"
|
||||
t.datetime "rejected_at"
|
||||
t.string "responsible_name", limit: 60
|
||||
end
|
||||
|
||||
add_index "organizations", ["user_id"], name: "index_organizations_on_user_id", using: :btree
|
||||
|
||||
create_table "proposals", force: :cascade do |t|
|
||||
t.string "title", limit: 80
|
||||
t.text "description"
|
||||
t.string "question"
|
||||
t.string "external_url"
|
||||
t.integer "author_id"
|
||||
t.datetime "hidden_at"
|
||||
t.integer "flags_count", default: 0
|
||||
t.datetime "ignored_flag_at"
|
||||
t.integer "cached_votes_up", default: 0
|
||||
t.integer "comments_count", default: 0
|
||||
t.datetime "confirmed_hide_at"
|
||||
t.integer "hot_score", limit: 8, default: 0
|
||||
t.integer "confidence_score", default: 0
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
end
|
||||
|
||||
create_table "settings", force: :cascade do |t|
|
||||
t.string "key"
|
||||
t.string "value"
|
||||
|
||||
@@ -149,6 +149,7 @@ FactoryGirl.define do
|
||||
|
||||
factory :organization do
|
||||
user
|
||||
responsible_name "Johnny Utah"
|
||||
sequence(:name) { |n| "org#{n}" }
|
||||
|
||||
trait :verified do
|
||||
|
||||
@@ -9,6 +9,7 @@ feature 'Organizations' do
|
||||
visit new_organization_registration_path
|
||||
|
||||
fill_in 'user_organization_attributes_name', with: 'Greenpeace'
|
||||
fill_in 'user_organization_attributes_responsible_name', with: 'Dorothy Stowe'
|
||||
fill_in 'user_email', with: 'green@peace.com'
|
||||
fill_in 'user_password', with: 'greenpeace'
|
||||
fill_in 'user_password_confirmation', with: 'greenpeace'
|
||||
|
||||
@@ -161,11 +161,12 @@ describe User do
|
||||
end
|
||||
|
||||
describe "organization_attributes" do
|
||||
before(:each) { subject.organization_attributes = {name: 'org'} }
|
||||
before(:each) { subject.organization_attributes = {name: 'org', responsible_name: 'julia'} }
|
||||
|
||||
it "triggers the creation of an associated organization" do
|
||||
expect(subject.organization).to be
|
||||
expect(subject.organization.name).to eq('org')
|
||||
expect(subject.organization.responsible_name).to eq('julia')
|
||||
end
|
||||
|
||||
it "deactivates the validation of username, and activates the validation of organization" do
|
||||
|
||||
Reference in New Issue
Block a user