wiki.rb 959 Bytes
Newer Older
Valery Sizov's avatar
Valery Sizov committed
1
class Wiki < ActiveRecord::Base
2 3
  attr_accessible :title, :content, :slug

Valery Sizov's avatar
Valery Sizov committed
4
  belongs_to :project
Valery Sizov's avatar
Valery Sizov committed
5
  belongs_to :user
6
  has_many :notes, as: :noteable, dependent: :destroy
Valery Sizov's avatar
Valery Sizov committed
7

Andrey Kumanyaev's avatar
Andrey Kumanyaev committed
8 9 10
  validates :content, presence: true
  validates :user, presence: true
  validates :title, presence: true, length: 1..250
Valery Sizov's avatar
Valery Sizov committed
11

12
  before_update :set_slug
Valery Sizov's avatar
Valery Sizov committed
13 14 15 16 17 18 19

  def to_param
    slug
  end

  protected

Andrey Kumanyaev's avatar
Andrey Kumanyaev committed
20 21 22 23 24 25 26 27 28 29
  def self.regenerate_from wiki
    regenerated_field = [:slug, :content, :title]

    new_wiki = Wiki.new
    regenerated_field.each do |field|
      new_wiki.send("#{field}=", wiki.send(field))
    end
    new_wiki
  end

Valery Sizov's avatar
Valery Sizov committed
30 31 32
  def set_slug
    self.slug = self.title.parameterize
  end
33

Valery Sizov's avatar
Valery Sizov committed
34
end
Nihad Abbasov's avatar
Nihad Abbasov committed
35

Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
36 37 38 39
# == Schema Information
#
# Table name: wikis
#
Nihad Abbasov's avatar
Nihad Abbasov committed
40
#  id         :integer         not null, primary key
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
41 42
#  title      :string(255)
#  content    :text
Nihad Abbasov's avatar
Nihad Abbasov committed
43
#  project_id :integer
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
44 45 46
#  created_at :datetime        not null
#  updated_at :datetime        not null
#  slug       :string(255)
Nihad Abbasov's avatar
Nihad Abbasov committed
47
#  user_id    :integer
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
48
#