aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlban Peignier2018-03-26 15:16:22 +0200
committerAlban Peignier2018-03-30 13:11:01 +0200
commite39d3e055ff61aebe4235492059c6bb7cb1d956f (patch)
tree91cd6821fecb9d7dc2ade05b7dd387bb3b23e403
parent9e3b1457d737092fc2b220ac9678407dcafcaf93 (diff)
downloadchouette-core-e39d3e055ff61aebe4235492059c6bb7cb1d956f.tar.bz2
Only create new membership when organisation isn't present in #add_member. Refs #6328
-rw-r--r--app/models/line_referential.rb4
-rw-r--r--app/models/line_referential_membership.rb3
-rw-r--r--app/models/stop_area_referential.rb2
-rw-r--r--app/models/stop_area_referential_membership.rb3
4 files changed, 9 insertions, 3 deletions
diff --git a/app/models/line_referential.rb b/app/models/line_referential.rb
index 0d2ed39b1..89700c06f 100644
--- a/app/models/line_referential.rb
+++ b/app/models/line_referential.rb
@@ -1,7 +1,7 @@
class LineReferential < ActiveRecord::Base
include ObjectidFormatterSupport
extend StifTransportModeEnumerations
-
+
has_many :line_referential_memberships
has_many :organisations, through: :line_referential_memberships
has_many :lines, class_name: 'Chouette::Line'
@@ -14,7 +14,7 @@ class LineReferential < ActiveRecord::Base
def add_member(organisation, options = {})
attributes = options.merge organisation: organisation
- line_referential_memberships.build attributes
+ line_referential_memberships.build attributes unless organisations.include?(organisation)
end
validates :name, presence: true
diff --git a/app/models/line_referential_membership.rb b/app/models/line_referential_membership.rb
index b49d1b5b1..e89ed50b3 100644
--- a/app/models/line_referential_membership.rb
+++ b/app/models/line_referential_membership.rb
@@ -1,4 +1,7 @@
class LineReferentialMembership < ActiveRecord::Base
belongs_to :organisation
belongs_to :line_referential
+
+ validates :organisation_id, presence: true, uniqueness: { scope: :line_referential }
+ validates :line_referential_id, presence: true
end
diff --git a/app/models/stop_area_referential.rb b/app/models/stop_area_referential.rb
index a9d3cc9b1..4706cdd77 100644
--- a/app/models/stop_area_referential.rb
+++ b/app/models/stop_area_referential.rb
@@ -12,7 +12,7 @@ class StopAreaReferential < ActiveRecord::Base
def add_member(organisation, options = {})
attributes = options.merge organisation: organisation
- stop_area_referential_memberships.build attributes
+ stop_area_referential_memberships.build attributes unless organisations.include?(organisation)
end
def last_sync
diff --git a/app/models/stop_area_referential_membership.rb b/app/models/stop_area_referential_membership.rb
index 435970961..68bc97f36 100644
--- a/app/models/stop_area_referential_membership.rb
+++ b/app/models/stop_area_referential_membership.rb
@@ -1,4 +1,7 @@
class StopAreaReferentialMembership < ActiveRecord::Base
belongs_to :organisation
belongs_to :stop_area_referential
+
+ validates :organisation_id, presence: true, uniqueness: { scope: :stop_area_referential }
+ validates :stop_area_referential_id, presence: true
end