我刚刚将旧项目升级到Rails 4,我刚刚意识到它已使用新式哈希语法升级schema.rb
。我想Rails会为它的所有生成器使用这种语法。
我怎么能友好地告诉Rails我更喜欢散列的旧式语法?
答案 0 :(得分:3)
schema.rb
由rake db:migrate
命令创建。据我所知,很难为Rails建议散列的旧式语法。但没有什么是不可能的,你可以使用rails/activerecord/lib/active_record/schema_dumper.rb
文件。唯一的问题是当你下次覆盖它时会升级rails gem。
这种用于哈希的新式语法的旧式语法在Dump schema using new style hash提交中完成。
答案 1 :(得分:1)
我知道这不是你问题的答案,但它可能会有所帮助。
如果您使用vim,这将允许您在旧版和旧版之间切换。新语法(source):
function! s:RubyHashSyntaxToggle() range
if join(getline(a:firstline, a:lastline)) =~# '=>'
silent! execute a:firstline . ',' . a:lastline . 's/[^{,]*[{,]\?\zs:\([^: ]\+\)\s*=>/\1:/g'
else
silent! execute a:firstline . ',' . a:lastline . 's/[^{,]*[{,]\?\zs\([^: ]\+\):/:\1 =>/g'
endif
endfunction
command! -bar -range RubyHashSyntaxToggle <line1>,<line2>call s:RubyHashSyntaxToggle()
noremap <Leader>rh :RubyHashSyntaxToggle<CR>
最大时,您需要按3次键才能按照自己的方式获取架构。它不是自动的,但作为对应物,它将适用于任何文件,而不仅仅是模式。
每次保存文件时都可以调用替换(我这样做是为了删除行末端的额外空格)。
如果你不使用vim,这些正则表达式可能会适应其他编辑器。