Skip to content

Instantly share code, notes, and snippets.

@rummelonp
Last active December 23, 2015 01:19
Show Gist options
  • Save rummelonp/6559801 to your computer and use it in GitHub Desktop.
Save rummelonp/6559801 to your computer and use it in GitHub Desktop.
プレフィクスのついたテーブル名/カラム名とかその他良い感じにするやつ
module TableFucking
extend ActiveSupport::Concern
included do
self.table_name = 'prefix_' + name.match(/\APrefix(.+)\Z/)[1].underscore
columns = connection.columns(table_name)
reserved_words = ActiveRecord::Base.instance_methods
columns.each do |column|
alias_column_name = column.name.gsub(/\A(?:integer|float|string|text|binary|boolean|time|timestamp|date|datetime)_?/, '')
next if reserved_words.include?(alias_column_name.to_sym)
alias_attribute(alias_column_name, column.name)
end
if method_defined?(:deleted)
default_scope -> {
where(boolean_deleted: false)
}
before_create do
self.deleted = false
end
define_method :destroy do
run_callbacks :destroy do
self.deleted = true
self.save
end
end
end
if method_defined?(:created)
before_create do
self.created = Time.now
end
end
if method_defined?(:modified)
before_save do |m|
self.modified = Time.now
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment