Почему в Rails нет метода для создания HABTM-таблицы?
January 15, 2010 in Ruby on RailsВ очередной раз набирая те шесть строчек, которыми – по соглашению – нужно описать таблицу для связи «многие ко многим», я подумал: а почему в Rails нет готового метода для этого? Почему каждый раз надо переписывать один и тот же код, попутно вспоминая, как сделать таблицу без ID – ведь используются они только для HABTM?
Подумал и написал:
# config/initializers/create_habtm_table.rb class ActiveRecord::Migration # create_habtm_table :posts, :tags def self.create_habtm_table(first_model,second_model) table_name = [first_model.to_s,second_model.to_s].sort.join('_').to_sym create_table table_name, :id => false do |t| t.belongs_to first_model.to_s.singularize.to_sym t.belongs_to second_model.to_s.singularize.to_sym end add_index table_name, (first_model.to_s.singularize+'_id').to_sym add_index table_name, (second_model.to_s.singularize+'_id').to_sym end # drop_habtm_table :posts, :tags def self.drop_habtm_table(first_model, second_model) table_name = [first_model.to_s,second_model.to_s].sort.join('_').to_sym drop_table table_name end end
Понравился пост? Купи мне кофе