From 70feef1256d341407d810e27f8726b306b1acb3d Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Mon, 25 Aug 2014 13:26:23 +1000 Subject: [PATCH] Add EnterpriseRelationshipPermission model --- app/models/enterprise_relationship.rb | 1 + app/models/enterprise_relationship_permission.rb | 2 ++ ...3227_create_enterprise_relationship_permissions.rb | 11 +++++++++++ db/schema.rb | 11 ++++++++++- spec/factories.rb | 6 ++++++ 5 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 app/models/enterprise_relationship_permission.rb create mode 100644 db/migrate/20140825023227_create_enterprise_relationship_permissions.rb diff --git a/app/models/enterprise_relationship.rb b/app/models/enterprise_relationship.rb index 4db650f2e7..312ff66572 100644 --- a/app/models/enterprise_relationship.rb +++ b/app/models/enterprise_relationship.rb @@ -1,6 +1,7 @@ class EnterpriseRelationship < ActiveRecord::Base belongs_to :parent, class_name: 'Enterprise', touch: true belongs_to :child, class_name: 'Enterprise', touch: true + has_many :permissions, class_name: 'EnterpriseRelationshipPermission' validates_presence_of :parent_id, :child_id validates_uniqueness_of :child_id, scope: :parent_id, message: "^That relationship is already established." diff --git a/app/models/enterprise_relationship_permission.rb b/app/models/enterprise_relationship_permission.rb new file mode 100644 index 0000000000..f615a91da7 --- /dev/null +++ b/app/models/enterprise_relationship_permission.rb @@ -0,0 +1,2 @@ +class EnterpriseRelationshipPermission < ActiveRecord::Base +end diff --git a/db/migrate/20140825023227_create_enterprise_relationship_permissions.rb b/db/migrate/20140825023227_create_enterprise_relationship_permissions.rb new file mode 100644 index 0000000000..1423c09db9 --- /dev/null +++ b/db/migrate/20140825023227_create_enterprise_relationship_permissions.rb @@ -0,0 +1,11 @@ +class CreateEnterpriseRelationshipPermissions < ActiveRecord::Migration + def change + create_table :enterprise_relationship_permissions do |t| + t.references :enterprise_relationship + t.string :name, null: false + end + + add_index :enterprise_relationship_permissions, :enterprise_relationship_id, name: 'index_erp_on_erid' + add_foreign_key :enterprise_relationship_permissions, :enterprise_relationships, name: 'erp_enterprise_relationship_id_fk' + end +end diff --git a/db/schema.rb b/db/schema.rb index 2c9c6b24ff..316c341576 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20140815065014) do +ActiveRecord::Schema.define(:version => 20140825023227) do create_table "adjustment_metadata", :force => true do |t| t.integer "adjustment_id" @@ -207,6 +207,13 @@ ActiveRecord::Schema.define(:version => 20140815065014) do add_index "enterprise_groups_enterprises", ["enterprise_group_id"], :name => "index_enterprise_groups_enterprises_on_enterprise_group_id" add_index "enterprise_groups_enterprises", ["enterprise_id"], :name => "index_enterprise_groups_enterprises_on_enterprise_id" + create_table "enterprise_relationship_permissions", :force => true do |t| + t.integer "enterprise_relationship_id" + t.string "name", :null => false + end + + add_index "enterprise_relationship_permissions", ["enterprise_relationship_id"], :name => "index_erp_on_erid" + create_table "enterprise_relationships", :force => true do |t| t.integer "parent_id" t.integer "child_id" @@ -1052,6 +1059,8 @@ ActiveRecord::Schema.define(:version => 20140815065014) do add_foreign_key "enterprise_groups_enterprises", "enterprise_groups", name: "enterprise_groups_enterprises_enterprise_group_id_fk" add_foreign_key "enterprise_groups_enterprises", "enterprises", name: "enterprise_groups_enterprises_enterprise_id_fk" + add_foreign_key "enterprise_relationship_permissions", "enterprise_relationships", name: "erp_enterprise_relationship_id_fk" + add_foreign_key "enterprise_relationships", "enterprises", name: "enterprise_relationships_child_id_fk", column: "child_id" add_foreign_key "enterprise_relationships", "enterprises", name: "enterprise_relationships_parent_id_fk", column: "parent_id" diff --git a/spec/factories.rb b/spec/factories.rb index 849d38abf3..39b3a01035 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -101,6 +101,12 @@ FactoryGirl.define do end factory :enterprise_relationship do + ignore { permissions [] } + after(:create) do |er, proxy| + proxy.permissions.each do |name| + er.permissions.create! name: name + end + end end factory :enterprise_role do