如何在Phoenix中的模型中添加实例方法?

时间:2016-05-10 07:54:58

标签: elixir phoenix-framework

我有这个型号:

wrong_database = {key[0] for key in data}.difference({self.name})
if wrong_database:
    raise WrongDatabase("Can't write activities in databases {} to database {}".format(
                        wrong_database, self.name))

如何向其添加实例方法,该方法也使用MyModel上的其他字段?这不起作用,因为在html页面上它会抛出一个异常defmodule MyApp.MyModel do use MyApp.Web, :model import Ecto.Query # ....

the key :my_method not found

1 个答案:

答案 0 :(得分:11)

由于Elixir是一种函数式编程语言,你没有方法,你有函数。你也没有“实例”的概念。有一个self函数,用于标识当前进程的PID,但是不应该将它与您在其他编程语言中习惯使用的“this”相混淆。

始终使用以下函数调用函数:

readonly

因此,要调用示例中的module.function(arg1, arg2) 函数(我已将其重命名为my_method),您可以这样做:

my_func

这里要注意的是你必须将struct作为参数传递给函数。然后你会用:

来调用它
def my_func(my_model) do
  my_model.some_attribute
end

http://elixir-lang.org/getting-started/introduction.html是了解Elixir工作方式的好方法。