在rails中,这是创建模型,控制器和视图的最佳实践?我知道有三种方法。
1)脚手架“一切”。
2)通过终端生成每个控制器和模型。
3)手动创建所有文件。 (这样做时需要小心。我必须牢记控制器的多元化并在模型中使用单数)
目前,我遵循第三种方法,虽然它涉及一些风险。我只想知道最佳做法是什么。如果还有其他方法,我很高兴知道。谢谢你的时间。
P.S:我是RoR的初学者。答案 0 :(得分:2)
我认为脚手架相当糟糕,因为它产生了很多你可能不想要的东西,我只把它用作尖峰解决方案。
在实际项目中,我的公司规则书说我必须使用测试驱动开发(我喜欢)。这意味着在默认方法中(有时我无法遵循)我从集成测试开始并从中继续。 (我建立一条路线,然后是控制器方法,然后是视图,然后是模型......)。
答案 1 :(得分:0)
我确实认为脚手架是最好的方法,因为它可以自动完成手动创建的整个过程。您只需rails g scaffold myscaffold
即可获得模型,控制器,视图和迁移,这就是我们将ruby称为灵活Web开发解决方案的原因。
因此,支持开发人员快速引导软件或更改功能的工具可以帮助您快速实现敏捷。
另一件事是,如果您可以快速启动项目,您可能会更灵活地重新排序优先级。这将有助于您的发展计划的核心发展 一种更清晰,更好的方式。
答案 2 :(得分:0)
没有完美的解决方案。如果您手动编码,您是否真的使用惯用轨道? 对于“中级”程序员 - 既不想手工编写所有东西,也不能依靠简单的脚手架。你必须理解生成的代码,但是从头开始将60 wpm完美编码留给大师!
我建议三个语用学
一个。获得一个伟大的开始。 Boilerplating是在Javascript和Node项目中执行此操作的主要方式,您可以在其中选择所需的模块(设计为auth,simple_form为ajaxy表单,twitter-bootstrap等),然后启动一个相当负载的站点,而不是将其用于零碎。这并不重 - 只是为了制作“PRO”网站。我仍在寻找好的RoR锅炉板,railsapps(作曲家是姐妹站点),railsbricks,以及好的旧Rails模板,Rails引擎应该允许你这样做。遗憾的是,没有足够的报道如何完成这项工作,因为它需要“大师”提供包含最佳实践的测试配置。
B中。模型第一种方法。从第一天开始就有一个像样的模特。不要逐个添加字段,而是坐下来尝试为您的网站获取3-4个核心表,并确定他们之间的关系。 “敏捷”的人可能会反对极简主义的做法,但如果你有经验,为什么不“设计一点”。当然,您希望在编码之前避免使用10个表或ER图的另一个极端!如果您拥有不错的模型/用户设计,您可以提前为您的MVP(最低限度可行的产品)预测网站和固有模型的外观。这当然表明你对应用程序的外观有2-4周的远见:)
℃。测试/迁移较少的脚手架。在首先进行模型生成和任何数据迁移时,混合方法更加实用,然后在没有测试的情况下使用脚手架或使用选项进行迁移。您可以看到Rails 4 for Beginners book ch 5作为示例。好处是 - 你不会覆盖手工制作的模型代码,让脚手架处理RoR魔术给你的每个模型的~5 +文件的脏细节。 #1。生成带标题,正文的模型文章 #do rake db:create,手动添加验证,例如存在,最小长度等到Model #你可以在这里做脚手架.. #现在只通过db migration添加位置和摘录(不是手动模式编辑,也不是全部脚手架) $ rails生成迁移add_excerpt_and_location_to_articles 摘录:字符串位置:字符串 #now OVERWRITE SCAFFOLD但不是型号.. $ rails g scaffold文章标题:字符串位置:字符串摘录:字符串 body:text published_at:datetime --skip-migration
如果你明白这一点 - 你可以看到,随着你的模型的发展,脚手架就会被处理掉。你现在真的不关心覆盖控制器细节和视图。但是你正在保护自己的模型,并进行手工编辑,例如:模型之间的关系和详细的验证。
作为一个附带好处,模型优先实用与这种方法很好地配合。在停止脚手架之前,您可以在应用程序中获得相当多的5-20个型号。到那时,您的代码模型应该公平确定。