Sha256: 20e200a08d378c8ddf411fa7fb3c5d582f4bde4e0e0a06bc68978836c7398bc7

Contents?: true

Size: 1.51 KB

Versions: 6

Compression:

Stored size: 1.51 KB

Contents

require 'active_record'
require 'translatable'

class CreateMessagesTables < ActiveRecord::Migration
  def up
    create_table(:writers, :force => true) do |t|
      t.string :name, :null => false

      t.timestamps
    end

    create_table(:translated_messages) do |t|
      t.string :title, :null => false
      t.string :content, :null => false
      t.integer :message_id, :null => false
      t.string :locale, :null => false, :limit => 2
      t.integer :writer_id

      t.timestamps
    end

    create_table(:messages) do |t|
      t.integer :writer_id

      t.timestamps
    end
  end

  def down
    drop_table(:writers)
    drop_table(:translated_messages)
    drop_table(:messages)
  end
end

CreateMessagesTables.migrate(:up)

class Author < ActiveRecord::Base
  validates :name, :presence => true
end

class TranslatedMessage < ActiveRecord::Base
  attr_accessible :title, :content
  attr_accessible :title, :content, :locale, :as => :editor

  before_validation :set_default_locale, :if => :writer_id
  before_create :duplicate_writer_id, :unless => :writer_id

  protected

  def set_default_locale
    self.locale ||= ::I18n.locale
  end

  def duplicate_writer_id
    self.writer_id = message.writer_id
  end
end

class Message < ActiveRecord::Base

  belongs_to  :writer

  translatable do
    translatable  :title, :presence => true, :uniqueness => true
    translatable  :content, :presence => true
    translatable_model 'TranslatedMessage'
    translatable_origin :message
  end

  attr_accessible :writer_id, :writer
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
translatable-0.3.1 test/support/models/messages.rb
translatable-0.3.0 test/support/models/messages.rb
translatable-0.2.4 test/messages.rb
translatable-0.2.2 test/messages.rb
translatable-0.2.1 test/messages.rb
translatable-0.2.0 test/messages.rb