Method: Gitgo::Rest#create

Defined in:
lib/gitgo/rest.rb

#create(sha = nil) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/gitgo/rest.rb', line 21

def create(sha=nil)
  return(sha.nil? ? preview : show(sha)) if preview?
  
  doc = model.save(attrs)
  
  parents = request['parents']
  if parents.nil? || parents.empty?
    doc.create
  else
    parents = [parents] unless parents.kind_of?(Array)
    parents.collect! do |parent|
      model[parent] or raise "invalid parent: #{parent.inspect}"
    end
    doc.link_to(*parents)
  end
  
  doc.commit!
  redirect_to_doc(doc)
end