0

我一直在尝试覆盖 rails 生成器(当您运行时rails generate scaffold)以生成日期类型 adate_field而不是date_select表单(时间和日期时间相同)。映射位于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

我不知道把更新的generated_attribute.rb文件放在哪里。我在rails应用程序中尝试过,但lib/generators/generated_attribute.rb没有lib/templates/generators/generated_attribute.rb效果。我还没有找到有关覆盖此文件以更改行为的任何其他信息。

提前致谢。使用导轨 5.2

4

1 回答 1

2

看起来这个文件还没有自动覆盖。我把我的放在lib/rails/generators/generated_attribute.rb 然后你可以require "#{Rails.root}/lib/rails/generators/generated_attribute.rb"在你的覆盖上添加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:

有点脏,但我希望这会有所帮助。

于 2019-08-13T08:30:41.293 回答