adds responsible_name to organizations

This commit is contained in:
Juanjo Bazán
2015-09-12 18:16:14 +02:00
parent d6c52ec866
commit 6b0edac6fc
12 changed files with 57 additions and 8 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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") %>

View File

@@ -25,3 +25,4 @@ en:
official_level: Official level
organization:
name: Organization name
responsible_name: Person in charge

View File

@@ -25,3 +25,4 @@ es:
official_level: Nivel del cargo
organization:
name: Nombre de organización
responsible_name: Persona responsable del colectivo

View File

@@ -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"

View File

@@ -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"

View File

@@ -0,0 +1,5 @@
class AddResponsibleNameToOrganizations < ActiveRecord::Migration
def change
add_column :organizations, :responsible_name, :string, limit: 60
end
end

View File

@@ -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"

View File

@@ -149,6 +149,7 @@ FactoryGirl.define do
factory :organization do
user
responsible_name "Johnny Utah"
sequence(:name) { |n| "org#{n}" }
trait :verified do

View File

@@ -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'

View File

@@ -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