Created
September 1, 2011 05:19
-
-
Save robyurkowski/1185498 to your computer and use it in GitHub Desktop.
Funky Times with Globalize3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class AddTranslationTableToBlog < ActiveRecord::Migration | |
def self.up | |
BlogPost.create_translation_table!({ | |
:title => :string, | |
:body => :text, | |
:custom_teaser => :text | |
}, :migrate_data => true) | |
# Not sure if needed... thought maybe might prevent it from squawking... | |
::BlogPost::Translation.module_eval do | |
is_seo_meta | |
end | |
::SeoMetum.update_all :seo_meta_type => 'BlogPost::Translation', :seo_meta_type => 'BlogPost' | |
remove_column :blog_posts, :title | |
remove_column :blog_posts, :body | |
remove_column :blog_posts, :custom_teaser | |
BlogCategory.create_translation_table!({ | |
:title => :string | |
}, :migrate_data => true) | |
remove_column :blog_categories, :title | |
end | |
def self.down | |
# ... | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
== AddTranslationTableToBlog: migrating ====================================== | |
rake aborted! | |
An error has occurred, this and all later migrations canceled: | |
Bad field type for field :custom_title (nil), should be :string or :text | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/globalize3-0.1.0/lib/globalize/active_record/migration.rb:101:in `block in validate_translated_fields' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/globalize3-0.1.0/lib/globalize/active_record/migration.rb:99:in `each' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/globalize3-0.1.0/lib/globalize/active_record/migration.rb:99:in `validate_translated_fields' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/globalize3-0.1.0/lib/globalize/active_record/migration.rb:29:in `create_translation_table!' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/globalize3-0.1.0/lib/globalize/active_record/migration.rb:12:in `create_translation_table!' | |
/Users/rob/Sites/alum/db/migrate/20110830150947_add_translation_table_to_blog.rb:4:in `up' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/migration.rb:314:in `block in migrate' | |
/Users/rob/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/benchmark.rb:295:in `measure' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/migration.rb:314:in `migrate' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/migration.rb:397:in `migrate' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/migration.rb:539:in `block (2 levels) in migrate' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/migration.rb:613:in `call' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/migration.rb:613:in `block in ddl_transaction' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/connection_adapters/abstract/database_statements.rb:139:in `transaction' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/transactions.rb:207:in `transaction' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/migration.rb:613:in `ddl_transaction' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/migration.rb:538:in `block in migrate' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/migration.rb:525:in `each' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/migration.rb:525:in `migrate' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/migration.rb:435:in `up' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/migration.rb:417:in `migrate' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.0.9/lib/active_record/railties/databases.rake:142:in `block (2 levels) in <top (required)>' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:636:in `call' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:636:in `block in execute' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:631:in `each' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:631:in `execute' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:597:in `block in invoke_with_call_chain' | |
/Users/rob/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:583:in `invoke' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:2029:in `block (2 levels) in top_level' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:2029:in `each' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:2029:in `block in top_level' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/airbrake-3.0.rc2/lib/airbrake/rake_handler.rb:32:in `standard_exception_handling' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:2001:in `block in run' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/lib/rake.rb:1998:in `run' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.8.7/bin/rake:31:in `<top (required)>' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/bin/rake:19:in `load' | |
/Users/rob/.rvm/gems/ruby-1.9.2-p290/bin/rake:19:in `<main>' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class BlogPost < ActiveRecord::Base | |
if self.respond_to?(:translates) | |
translates :title, :body, :custom_teaser, :custom_title, :meta_keywords, :meta_description, :include => :seo_meta | |
# Set up support for meta tags through translations. | |
if defined?(::BlogPost::Translation) | |
if ::BlogPost::Translation.table_exists? | |
def translation | |
if @translation.nil? or @translation.try(:locale) != ::Globalize.locale | |
@translation = translations.with_locale(::Globalize.locale).first | |
@translation ||= translations.build(:locale => ::Globalize.locale) | |
end | |
@translation | |
end | |
# Instruct the Translation model to have meta tags. | |
::BlogPost::Translation.send :is_seo_meta | |
fields = ::SeoMeta.attributes.keys.reject{|f| | |
self.column_names.map(&:to_sym).include?(f) | |
}.map{|a| [a, :"#{a}="]}.flatten | |
delegate *(fields << {:to => :translation}) | |
after_save proc {|m| m.translation.save} | |
before_create :ensure_locale, :if => proc { |c| | |
::Refinery.i18n_enabled? | |
} | |
end | |
end | |
end | |
# ... | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment