Rails中有一些东西:
## Concerns
## Decorators
## Presenters
## Service Objects
## Helpers
任何人都可以给我一个真正的问题示例,我应该遵循什么类型的情况,所以我可以更好地理解这些功能。
示例将更好地理解概念
提前致谢并感谢您的光临
答案 0 :(得分:7)
好吧,正如我在评论中所说的那样,通过简单的谷歌搜索,你会更好。
例如,this是关于大多数文章的好文章。
我将带您了解基础知识。
主要关注的是干燥模型和控制器。如果你有一个非常胖的控制器/模型,其中有很多功能(违反SRP),最好将其分解为几个独立的问题并将它们包含在内。这样你也可以在类似的控制器之间共享功能/楷模。 Here's一篇不错的文章。
装饰器用于将模型的业务逻辑与其用户外观分离。例如。用于存储仅在视图中使用的方法和用于其他显示的方法。它们还用于扩展对象的逻辑。 Here是一个很好的尽管的帖子。
演示者几乎相同,但仅用于显示目的。
服务对象主要用于复杂的逻辑,这些逻辑不是必须属于特定的模型/控制器和/或处理多个模型。
助手可以很好地将逻辑移出视图,从而简化视图模式并干掉视图。通常用于简单的事情(因为否则最好使用装饰器或演示者)。
答案 1 :(得分:0)
用于在一个'类型的文件之间共享功能。 (' model',' controller',...)。 你有
/app
/controllers
/concerns
/models
/concerns
在concerns
中,您放置了将包含在类中的模块。放一些行为代码是上帝的做法。例如
/app
/models
/concerns
messageable.rb
project.rb
..
proposal.rb
项目模型
class Project < ActiveRecord::Base
include Messageable
end
提案模型
class Proposal < ActiveRecord::Base
include Messageable
end
在app/models/concerns/messageable.rb
require 'active_record/concern'
module Messageable
extend ActiveSupport::Concern
# implement behaviour
module ClassMethods
# class methods for the behaviour
end
end