使用ruby/rails重载方法的属性



我的用户模型中有一个身份验证方法。

我希望能够像那样调用这种方法

User.authenticate(:email => email@exmaple.com, :password => "123")

User.authenticate(:remember_token => "asdasds41")

正确的方法是什么?

我在rails源代码中看了一眼(验证函数),注意到函数得到了*属性,但我不知道*代表什么以及如何读取内部变量

Tnx用于帮助

您所说的方法实际上是取一个值的散列。散列中的密钥(例如:remember_token、:email和:password)充当命名参数,它们在调用语句中出现的顺序在哪里并不重要。

此外,散列通常需要用大括号(例如{…})包围,但在Ruby中,方法中的最后一个参数不需要这些大括号。

您所说的*属性是通过数组将动态数量的参数传递给方法的一种方式。*attributes表示法指示Ruby将这些属性展开为一个参数列表。

你所说的身份验证方法看起来像这样:

class User
  def self.authenticate(params)
    puts params[:email]
    puts params[:password]
    puts params[:remember_token]
  end
end

在那里,你显然会做一些事情,而不是打印出你正在接收的参数。

相关内容

  • 没有找到相关文章

最新更新