Rails 怎么让 AI 写出更有 Rails 味的代码?

willx · 2026年07月01日 · 最后由 killernova 回复于 2026年07月16日 · 774 次阅读

最近用 AI 写 Rails,发现它很喜欢按那种 controller -> service -> model 的方式组织代码。代码能跑,但是确实完全没有 Rails 的味道。

经常上来就加 service,把 model 写得很贫血;concerns、mixin、Ruby 本身的一些顺手写法也不太会主动用。

我想让 AI 写得更接近 Rails 传统那种 fat model、skinny controller 的感觉,不要动不动就分层分到很远。

大家有类似经验吗?有没有 SKILL 可以推荐一下的。

人气很高的 SKILL superpowers 有个 Ruby 版的,就叫 superpowers-ruby,https://github.com/lucianghinda/superpowers-ruby

Rails Service 只是一个单纯处理单一动作的 Ruby 类,通常会包装在一个 call 方法中,如果场景合适,我觉得也是 rails 味的,以下是上古时期的学习资料:
https://www.toptal.com/developers/ruby-on-rails/rails-service-objects-tutorial
https://www.honeybadger.io/blog/refactor-ruby-rails-service-object/
https://dev.to/joker666/ruby-on-rails-pattern-service-objects-b19
https://codeclimate.com/legacy/7-ways-to-decompose-fat-activerecord-models
https://blog.appsignal.com/2020/09/16/rails-concers-to-concern-or-not-to-concern.html

Fat model 其实也是问题,拆成 concerns, service 是常规操作。

俱往矣,现在都是闭着眼睛 PUA Opus 了。

有没有一种可能,这就是绝大多数的 rails 的代码的味道……

反正都是 AI 写的,你就随便看两眼得了,实在看不下去,不就是费点 token 让 AI 写成你想要的样子么……

ericguo 回复

对,现在能流畅运行没 BUG 都可以了,可能我自己写都未必有 AI 写得好

我在使用 Rails 的 AI 时也注意到了同样的问题。它经常默认采用通用的服务层架构,而不是遵循 Rails 的约定,例如胖模型、瘦控制器、作用域、回调、关注点和 Active Record 模式。我发现,通过明确告诉 AI“遵循 Rails 约定,除非复杂性确实需要,否则优先使用 Active Record 而不是服务对象,并保持代码的惯用风格”,效果会更好。之后,输出的代码看起来更简洁。微调提示与优化在线游戏中的策略非常相似——微小的调整就能对最终结果产生巨大的影响。| https://www.google.com

ericguo 回复

其实我现在研究 rails 只是类似弹吉他一样的兴趣爱好了。说实话,如果只是为了干活儿上生产,我何必用 rails 呢……反正都是 AI 一把梭。现在 AI 写 go、node、py 这些写的最好了。

现在还有人看代码吗?爱写啥样就啥样吧

AI 写 Rails,对于 enum 字段,很喜欢用 char 类型,然后用 validates 去约束可用值。我说的是 gpt5.6

需要 登录 后方可回复, 如果你还没有账号请 注册新账号