@@ -38,35 +38,39 @@ def parse_model_mappings
3838 @model_names ||= parse_model_mappings
3939 @model_names [ type ]
4040 end
41+
42+ define_method ( "#{ type } _table_name" ) do
43+ table_name_for ( send ( "#{ type } _model_name" ) )
44+ end
4145 end
4246
4347 def create_views
4448 # Chat views
45- template 'views/chats/index.html.erb' , "app/views/#{ chat_model_name . tableize } /index.html.erb"
46- template 'views/chats/new.html.erb' , "app/views/#{ chat_model_name . tableize } /new.html.erb"
47- template 'views/chats/show.html.erb' , "app/views/#{ chat_model_name . tableize } /show.html.erb"
49+ template 'views/chats/index.html.erb' , "app/views/#{ chat_table_name } /index.html.erb"
50+ template 'views/chats/new.html.erb' , "app/views/#{ chat_table_name } /new.html.erb"
51+ template 'views/chats/show.html.erb' , "app/views/#{ chat_table_name } /show.html.erb"
4852 template 'views/chats/_chat.html.erb' ,
49- "app/views/#{ chat_model_name . tableize } /_#{ chat_model_name . underscore } .html.erb"
50- template 'views/chats/_form.html.erb' , "app/views/#{ chat_model_name . tableize } /_form.html.erb"
53+ "app/views/#{ chat_table_name } /_#{ chat_model_name . underscore } .html.erb"
54+ template 'views/chats/_form.html.erb' , "app/views/#{ chat_table_name } /_form.html.erb"
5155
5256 # Message views
5357 template 'views/messages/_message.html.erb' ,
54- "app/views/#{ message_model_name . tableize } /_#{ message_model_name . underscore } .html.erb"
55- template 'views/messages/_form.html.erb' , "app/views/#{ message_model_name . tableize } /_form.html.erb"
58+ "app/views/#{ message_table_name } /_#{ message_model_name . underscore } .html.erb"
59+ template 'views/messages/_form.html.erb' , "app/views/#{ message_table_name } /_form.html.erb"
5660 template 'views/messages/create.turbo_stream.erb' ,
57- "app/views/#{ message_model_name . tableize } /create.turbo_stream.erb"
61+ "app/views/#{ message_table_name } /create.turbo_stream.erb"
5862
5963 # Model views
60- template 'views/models/index.html.erb' , "app/views/#{ model_model_name . tableize } /index.html.erb"
61- template 'views/models/show.html.erb' , "app/views/#{ model_model_name . tableize } /show.html.erb"
64+ template 'views/models/index.html.erb' , "app/views/#{ model_table_name } /index.html.erb"
65+ template 'views/models/show.html.erb' , "app/views/#{ model_table_name } /show.html.erb"
6266 template 'views/models/_model.html.erb' ,
63- "app/views/#{ model_model_name . tableize } /_#{ model_model_name . underscore } .html.erb"
67+ "app/views/#{ model_table_name } /_#{ model_model_name . underscore } .html.erb"
6468 end
6569
6670 def create_controllers
67- template 'controllers/chats_controller.rb' , "app/controllers/#{ chat_model_name . tableize } _controller.rb"
68- template 'controllers/messages_controller.rb' , "app/controllers/#{ message_model_name . tableize } _controller.rb"
69- template 'controllers/models_controller.rb' , "app/controllers/#{ model_model_name . tableize } _controller.rb"
71+ template 'controllers/chats_controller.rb' , "app/controllers/#{ chat_table_name } _controller.rb"
72+ template 'controllers/messages_controller.rb' , "app/controllers/#{ message_table_name } _controller.rb"
73+ template 'controllers/models_controller.rb' , "app/controllers/#{ model_table_name } _controller.rb"
7074 end
7175
7276 def create_jobs
@@ -75,16 +79,16 @@ def create_jobs
7579
7680 def add_routes
7781 model_routes = <<~ROUTES . strip
78- resources :#{ model_model_name . tableize } , only: [:index, :show] do
82+ resources :#{ model_table_name } , only: [:index, :show] do
7983 collection do
8084 post :refresh
8185 end
8286 end
8387 ROUTES
8488 route model_routes
8589 chat_routes = <<~ROUTES . strip
86- resources :#{ chat_model_name . tableize } do
87- resources :#{ message_model_name . tableize } , only: [:create]
90+ resources :#{ chat_table_name } do
91+ resources :#{ message_table_name } , only: [:create]
8892 end
8993 ROUTES
9094 route chat_routes
@@ -107,9 +111,17 @@ def display_post_install_message
107111 return unless behavior == :invoke
108112
109113 say "\n ✅ Chat UI installed!" , :green
110- say "\n Start your server and visit http://localhost:3000/#{ chat_model_name . tableize } " , :cyan
114+ say "\n Start your server and visit http://localhost:3000/#{ chat_table_name } " , :cyan
111115 say "\n "
112116 end
117+
118+ private
119+
120+ def table_name_for ( model_name )
121+ # Convert namespaced model names to proper table names
122+ # e.g., "Assistant::Chat" -> "assistant_chats" (not "assistant/chats")
123+ model_name . underscore . pluralize . tr ( '/' , '_' )
124+ end
113125 end
114126 end
115127end
0 commit comments