summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/ability.rb3
-rw-r--r--app/models/project.rb1
-rw-r--r--app/models/snippet.rb31
3 files changed, 35 insertions, 0 deletions
diff --git a/app/models/ability.rb b/app/models/ability.rb
index 0a2c45f1289..9a5970b5838 100644
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -12,6 +12,7 @@ class Ability
rules << [
:read_project,
:read_issue,
+ :read_snippet,
:read_team_member,
:read_note
] if project.readers.include?(user)
@@ -19,12 +20,14 @@ class Ability
rules << [
:write_project,
:write_issue,
+ :write_snippet,
:write_note
] if project.writers.include?(user)
rules << [
:admin_project,
:admin_issue,
+ :admin_snippet,
:admin_team_member,
:admin_note
] if project.admins.include?(user)
diff --git a/app/models/project.rb b/app/models/project.rb
index 3c07976d24e..3366b87816a 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -7,6 +7,7 @@ class Project < ActiveRecord::Base
has_many :users_projects, :dependent => :destroy
has_many :users, :through => :users_projects
has_many :notes, :dependent => :destroy
+ has_many :snippets, :dependent => :destroy
validates :name,
:uniqueness => true,
diff --git a/app/models/snippet.rb b/app/models/snippet.rb
new file mode 100644
index 00000000000..d51afc39994
--- /dev/null
+++ b/app/models/snippet.rb
@@ -0,0 +1,31 @@
+class Snippet < ActiveRecord::Base
+ belongs_to :project
+ belongs_to :author, :class_name => "User"
+ has_many :notes, :as => :noteable
+
+ attr_protected :author, :author_id, :project, :project_id
+
+ validates_presence_of :project_id
+ validates_presence_of :author_id
+
+ validates :title,
+ :presence => true,
+ :length => { :within => 0..255 }
+
+ validates :file_name,
+ :presence => true,
+ :length => { :within => 0..255 }
+
+ validates :content,
+ :presence => true,
+ :length => { :within => 0..10000 }
+
+
+ def self.content_types
+ [
+ ".rb", ".py", ".pl", ".scala", ".c", ".cpp", ".java",
+ ".haml", ".html", ".sass", ".scss", ".xml", ".php", ".erb",
+ ".js", ".sh", ".coffee", ".yml", ".md"
+ ]
+ end
+end