I have been trying to override the rails generator (when you run rails generate scaffold
) to produce for a date type a date_field
instead of date_select
in the form (same for time and date time). The mapping is located in railties/lib/rails/generators/generated_attribute.rb
def field_type
@field_type ||= case type
when :integer then :number_field
when :float, :decimal then :text_field
when :time then :time_select
when :datetime, :timestamp then :datetime_select
when :date then :date_select
when :text then :text_area
when :boolean then :check_box
else
:text_field
end
end
I can't work out where to put the updated generated_attribute.rb
file. I have tried in the rails app lib/generators/generated_attribute.rb
and lib/templates/generators/generated_attribute.rb
to no effect. I have not found any other information about overriding this file to change the behaviour.
Thanks in advance. Using rails 5.2
It looks like there is no automatic overriding of this file yet.
I've put mine at lib/rails/generators/generated_attribute.rb
Then you can add require "#{Rails.root}/lib/rails/generators/generated_attribute.rb"
on top on your overriden lib/rails/generators/erb/scaffold/scaffold_generator.rb
:
require "#{Rails.root}/lib/rails/generators/generated_attribute.rb"
require "rails/generators/erb"
require "rails/generators/resource_helpers"
module Erb # :nodoc:
module Generators # :nodoc:
class ScaffoldGenerator < Base # :nodoc:
A bit dirty, but I hope this helps.