gpt4 book ai didi

ruby-on-rails - 类似 Rails 模型的 Mixin

转载 作者:行者123 更新时间:2023-12-04 06:28:50 25 4
gpt4 key购买 nike

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

My Rails 应用程序模型协会足球 (soccer) 比赛。匹配项由 Match 表示模型。我还有几个模型来表示比赛期间可能发生的事件(例如 GoalPenaltyKickCaution)。 Match模型和这些事件的模型有一个 has_many/belongs_to关系。

这些模型中的每一个都具有三个共同的时间属性:period , minute , 和 order_within_minute .使用这些专栏中的信息,我可以编写一个非常简单的 <=>根据事件发生的时间使这些事件具有可比性的方法。至关重要的是,我能够在此基础上比较事件,这样我就可以在比赛中返回经过排序的事件列表。

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

include Comparable

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

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

我知道这可能是一个非常基本的问题,但正确的方法是什么?我是否将上面的代码块放在一个模块中并且 include每个模型中的那个模块,还是我需要做一些不同的事情?我应该将此代码放在我的文件系统中的什么位置?

最佳答案

Do I put the above block of code within a module and include that module in each of these models, or do I need to do something different?

这正是您所做的。

Where do I put this code within my file system?

app/models/concerns 中的 comparable.rb 下应该没问题,即使它没有使用 ActiveSupport 的语法糖::关注 优惠。

关于ruby-on-rails - 类似 Rails 模型的 Mixin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48253116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com