首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类似Rails模型的混合器

类似Rails模型的混合器
EN

Stack Overflow用户
提问于 2018-01-14 19:03:14
回答 1查看 619关注 0票数 3

我不是一个铁路新手,但我肯定离成为一个专家还有很长的路要走。我从一般意义上理解模块是如何工作的,但我从来没有完全理解如何利用我自己创建的模块来发挥我的优势。这是一个非常简单的例子,在这个例子中,我非常肯定一个混合模块将是合适的和有用的。

我的Rails应用程序模型关联足球(足球)比赛。匹配由Match模型表示。我还有几个模型来表示匹配过程中可能发生的事件(例如,GoalPenaltyKickCaution)。Match模型和这些事件的模型具有has_many/belongs_to关系。

这些模型中的每一个都有三个共同的时态属性:periodminuteorder_within_minute。有了这些列中的信息,我可以编写一个非常简单的<=>方法,根据这些事件发生的时间使这些事件具有可比性。至关重要的是,我能够在此基础上对事件进行比较,以便在匹配中返回一个已排序的事件列表。

我理解这些模型中的每一个都需要包含相同的代码才能实现我想要的目标:

代码语言:javascript
复制
include Comparable

def <=>
  ## Comparison code goes here ##
end

在我看来,这可以通过一个混合器来实现,将相同的代码应用到每个模型中,但我不太确定如何做到这一点。

我意识到这可能是一个非常基本的问题,但是怎样才是正确的方法呢?我是把上面的代码块放在一个模块中,并在每个模型中加入include模块,还是需要做一些不同的事情?我应该把这些代码放在我的文件系统中吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-14 19:48:16

我是将上面的代码块放在一个模块中,并将该模块包含在每个模型中,还是需要做一些不同的事情?

你就是这么做的。

我应该把这些代码放在我的文件系统中吗?

comparable.rb in app/models/concerns下生活应该很好,尽管它没有使用ActiveSupport::Concern提供的语法糖。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48253116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档