gpt4 book ai didi

ruby-on-rails-3 - Rails - 访问模型中的模块方法

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

所以,我已经读完了:

但我无法让它工作。这是我的情况:

我有一个 calc_distance(place1, place2)方法和属性 places到我的User模型,我想定义一个方法 calc_total_distanceUser模型。

我想访问 calc_distance通过 Utils 的方法lib 而不是在使用它时加载整个实用程序。

/lib/utils.rb

module Utils
def calc_distance a, b
# Blah blah blah
end
end

/config/application.rb我有:

config.autoload_paths += %W(#{config.root}/lib)

在控制台中,我可以做 include Utils然后 calc_distance(place1, place2)它有效。但是Utils::calc_distance(place1 place2)不工作...

额外的问题是我可以这样做吗?

然后在我的User.rb型号:

  def get_total_distance
# Blah blah blah
dist += calc_distance(place1, place2)
# Blah blah blah
end

返回我 undefined method 'include' for #<User:0x00000006368278>

  def get_total_distance
# Blah blah blah
dist += Utils::calc_distance(place1, place2)
# Blah blah blah
end

返回我 undefined method 'calc_distance' for Utils:Module

知道我真的更喜欢第二种方法(据我估计,它不会加载整个 Utils 模块 ...

最佳答案

如果你不想做 mixin,只是想定义一些 Utils 的方法,那么你可以在模块级别定义方法(使用 self.prefix):

module Utils
def self.calc_distance a, b
# Blah blah blah
end
end

然后这样称呼他们:

Utils.calc_distance(place1, place2)

代替

Utils::calc_distance(place1, place2)

关于ruby-on-rails-3 - Rails - 访问模型中的模块方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18124080/

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