Commit 8db2a59d authored by Robert Speicher's avatar Robert Speicher

Add StaticModel role, and add it to Commit model

Instead of doing this:

    link_to(commit.id, project_commit_path(project, id: commit.id))
    Note.create(noteable_id: commit.id, noteable_type: "Commit", ...)

It lets us do this:

    link_to(commit.id, project_commit_path(project, commit))
    Note.create(noteable: commit, ...)
parent 877aa545
class Commit class Commit
include ActiveModel::Conversion include ActiveModel::Conversion
include Gitlab::Encode include Gitlab::Encode
include StaticModel
extend ActiveModel::Naming extend ActiveModel::Naming
attr_accessor :commit attr_accessor :commit
...@@ -22,8 +23,7 @@ class Commit ...@@ -22,8 +23,7 @@ class Commit
:to_patch, :to_patch,
to: :commit to: :commit
class << self
class << self
def find_or_first(repo, commit_id = nil, root_ref) def find_or_first(repo, commit_id = nil, root_ref)
commit = if commit_id commit = if commit_id
repo.commit(commit_id) repo.commit(commit_id)
...@@ -85,7 +85,7 @@ class Commit ...@@ -85,7 +85,7 @@ class Commit
first = project.commit(to.try(:strip)) first = project.commit(to.try(:strip))
last = project.commit(from.try(:strip)) last = project.commit(from.try(:strip))
result = { result = {
commits: [], commits: [],
diffs: [], diffs: [],
commit: nil commit: nil
...@@ -105,10 +105,6 @@ class Commit ...@@ -105,10 +105,6 @@ class Commit
end end
end end
def persisted?
false
end
def initialize(raw_commit, head = nil) def initialize(raw_commit, head = nil)
@commit = raw_commit @commit = raw_commit
@head = head @head = head
...@@ -155,7 +151,7 @@ class Commit ...@@ -155,7 +151,7 @@ class Commit
prev_commit.try :id prev_commit.try :id
end end
def parents_count def parents_count
parents && parents.count || 0 parents && parents.count || 0
end end
end end
# Provides an ActiveRecord-like interface to a model whose data is not persisted to a database.
module StaticModel
extend ActiveSupport::Concern
module ClassMethods
# Used by ActiveRecord's polymorphic association to set object_id
def primary_key
'id'
end
# Used by ActiveRecord's polymorphic association to set object_type
def base_class
self
end
end
# Used by AR for fetching attributes
#
# Pass it along if we respond to it.
def [](key)
send(key) if respond_to?(key)
end
def to_param
id
end
def persisted?
false
end
def destroyed?
false
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment