Decouple to_params from AtomicInternalId concern

This commit is contained in:
Shinya Maeda 2018-05-08 14:57:41 +09:00
parent 632b87a80e
commit 0af2ab18fa
7 changed files with 15 additions and 6 deletions

View File

@ -14,7 +14,7 @@ module Ci
belongs_to :auto_canceled_by, class_name: 'Ci::Pipeline'
belongs_to :pipeline_schedule, class_name: 'Ci::PipelineSchedule'
has_internal_id :iid, scope: :project, presence: false, to_param: false, init: -> do |s|
has_internal_id :iid, scope: :project, presence: false, init: -> do |s|
s&.project&.pipelines&.maximum(:iid) || s&.project&.pipelines.count
end

View File

@ -25,7 +25,7 @@ module AtomicInternalId
extend ActiveSupport::Concern
module ClassMethods
def has_internal_id(column, scope:, init:, presence: true, to_param: true) # rubocop:disable Naming/PredicateName
def has_internal_id(column, scope:, init:, presence: true) # rubocop:disable Naming/PredicateName
before_validation :"ensure_#{column}!", on: :create
validates column, presence: presence, numericality: true
@ -42,10 +42,6 @@ module AtomicInternalId
read_attribute(column)
end
define_method("to_param") do
read_attribute(column)
end if to_param
end
end
end

View File

@ -0,0 +1,9 @@
module IIDRoutes
##
# This automagically enforces all related routes to use `iid` instead of `id`
# If you want to use `iid` for some routes and `id` for other routes, this module should not to be included,
# instead you should define `iid` or `id` explictly at each route generators. e.g. pipeline_path(project.id, pipeline.iid)
def to_param
iid.to_s
end
end

View File

@ -1,5 +1,6 @@
class Deployment < ActiveRecord::Base
include AtomicInternalId
include IIDRoutes
belongs_to :project, required: true
belongs_to :environment, required: true

View File

@ -2,6 +2,7 @@ require 'carrierwave/orm/activerecord'
class Issue < ActiveRecord::Base
include AtomicInternalId
include IIDRoutes
include Issuable
include Noteable
include Referable

View File

@ -1,5 +1,6 @@
class MergeRequest < ActiveRecord::Base
include AtomicInternalId
include IIDRoutes
include Issuable
include Noteable
include Referable

View File

@ -9,6 +9,7 @@ class Milestone < ActiveRecord::Base
include CacheMarkdownField
include AtomicInternalId
include IIDRoutes
include Sortable
include Referable
include StripAttribute