12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/generators/beautiful_jointable_generator.rb', line 12
def create_join_table
if join_models.length != 2 then
say_status("Error", "Error need two singular models : example : user product", :red)
else
sorted_model = join_models.sort
prefix_str = ''
if engine_name.present?
prefix_str = "#{engine_opt}_"
end
join_table_name = "#{prefix_str}#{sorted_model[0].pluralize}_#{sorted_model[1].pluralize}"
migration_content = "
create_table :#{join_table_name}, :id => false do |t|
t.integer :#{sorted_model[0]}_id
t.integer :#{sorted_model[1]}_id
end
add_index :#{join_table_name}, [:#{sorted_model[0]}_id, :#{sorted_model[1]}_id]
"
migration_name = "create_join_table_for_#{sorted_model[0]}_and_#{sorted_model[1]}"
generate("migration", migration_name)
filename = Dir.glob("db/migrate/*#{migration_name}.rb")[0]
inject_into_file(filename, migration_content, :after => "def change")
inject_into_file("app/models/#{engine_name}#{sorted_model[0]}.rb", "\n #{engine_name.present? ? ' ' : ''}has_and_belongs_to_many :#{sorted_model[1].pluralize}", :after => "ApplicationRecord")
inject_into_file("app/models/#{engine_name}#{sorted_model[1]}.rb", "\n #{engine_name.present? ? ' ' : ''}has_and_belongs_to_many :#{sorted_model[0].pluralize}", :after => "ApplicationRecord")
inject_into_file("app/models/#{engine_name}#{sorted_model[0]}.rb", "{ :#{sorted_model[1]}_ids => [] }, ", :after => /permitted_attributes#{regexp_an_string}return /)
inject_into_file("app/models/#{engine_name}#{sorted_model[1]}.rb", "{ :#{sorted_model[0]}_ids => [] }, ", :after => /permitted_attributes#{regexp_an_string}return /)
end
end
|