【问题标题】:Renaming controllers in Rails and cleaning out generated content在 Rails 中重命名控制器并清除生成的内容
【发布时间】:2008-09-18 02:29:55
【问题描述】:

我正在关注有关 restful_authentication 插件的 railscast。

他建议运行命令:

脚本/生成经过身份验证的用户会话

我做了什么,一切都“很好”,但是会话不起作用。再次检查该站点,他提到了一个命名标准并列出了更新的代码,其中指出:

脚本/生成经过身份验证的用户会话

会话被多元化。

所以现在我有 session_controller.rb 里面有一个 SessionController,但我猜根据命名标准,它正在寻找 SessionsController,导致代码失败并出现错误“SessionsController#create 中的 NameError”

我看到了问题,这很明显,但我不知道的是,如何在不重新生成内容的情况下解决这个问题?有没有办法逆转生成过程以清除生成所做的所有更改?

我尝试使用 e SessionsController 类将文件重命名为 session_controller,但失败了。

在写这篇文章时,我解决了自己的问题。我不得不将路由文件中的会话重命名为 map.resource 并将视图目录从会话重命名为会话,并将 html.erb 文件中的 session_path 更新为 session_path。

所以我解决了我的问题,但我关于删除生成的内容的答案仍然存在。是否可以取消生成内容?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    实际上,script/destroy 适用于任何生成器 - 生成器通过读取有关要创建的文件的各种脚本来工作; script/destroy 只是反向读取该脚本并删除所有创建的文件,只要您为其提供与传递给 script/generate 相同的参数。

    总结一下:script/destroy authenticated user session 会为您删除所有生成的文件,之后您可以毫无问题地运行script/generate user sessions

    【讨论】:

      【解决方案2】:

      我从未尝试过script/destroy,但如果您要恢复刚刚所做的更改,generate 命令应该会为您提供添加的文件和所做更改的列表。如果您使用某种版本控制系统,运行 status/diff 可能也会有所帮助。

      【讨论】:

        【解决方案3】:

        你可以在 subversion 中回滚到上一个版本,然后重新开始,对吗?对? :-)

        rails 有 script/destroy 用于“未生成”的东西,但我怀疑它只适用于 rails 附带的东西,而不是 restful 身份验证插件。

        我会说你最好的选择是在文件中查找(或 grep -R,如果你不使用 IDE) - 找到所有引用旧 SessionController 的内容并进行更改

        【讨论】:

          猜你喜欢
          • 2013-02-09
          • 1970-01-01
          • 2011-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-18
          相关资源
          最近更新 更多