我有一个生成器,作为一组其他操作的一部分,需要使用一堆mixins,默认值,注释等来设置模型类。
我想使用相同的rails g model ...
代码(我从我的生成器调用invoke
),但问题是存在冲突,因为我的模板和模型生成器的模板正在尝试互相抨击:
$ be rails g entry_form karaoke events full_name:string group_name:string
create app/controllers/karaokes_controller.rb
create app/views/karaokes/show.html.erb
create app/views/karaokes/thanks.html.erb
route resource :karaoke
create app/models/karaoke_entry.rb
invoke active_record
create db/migrate/20111004004008_create_karaoke_entries.rb
conflict app/models/karaoke_entry.rb
Overwrite app/models/karaoke_entry.rb?
(enter "h" for help) [Ynaqdh]
有任何建议如何解决这个问题?
(我提出的最好的方法是将我的模型文件创建移到底部,并找到一些方法强制template
/ copy_file
继续并覆盖文件而不会打扰用户,但我看不到任何预先存在的方法。)
答案 0 :(得分:3)
一些团队头脑风暴找到了解决这个问题的方法。
您无法覆盖(据我所知),但您可以告诉模型生成器跳过已存在的文件。这有效:
# Create the model definition from a template:
template "model.rb", "app/models/#{model}.rb"
# ... Later, get Rails to create everything else:
Rails::Generators.invoke("model", ["Example", "title:string", "--skip"])
(我仍然欢迎允许template
覆盖文件的方法。)
答案 1 :(得分:2)
将force: true
或skip: true
附加到模板调用中:
template "model.rb", "app/models/#{model}.rb", force: true