1

我刚刚将一个旧项目升级到 Rails 4,我刚刚意识到它已经升级了schema.rb使用新型哈希语法。我想 Rails 会为它的所有生成器使用这种语法。

友好地,我怎么能对 Rails 说我更喜欢旧式的哈希语法?

4

2 回答 2

3

schema.rbrake db:migrate命令创建。据我所知,很难向 Rails 推荐旧式的哈希语法。但没有什么是不可能的,你可以玩弄rails/activerecord/lib/active_record/schema_dumper.rb文件。唯一的问题是下次升级 rails gem 时它会覆盖。

这种旧式语法到新式哈希语法是在Dump 模式中使用新式哈希提交完成的。

于 2014-02-06T20:48:02.270 回答
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,这些正则表达式可能会适应其他编辑器。

于 2014-02-07T10:48:33.643 回答