我的用户模型中有一个身份验证方法。
我希望能够像那样调用这种方法
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
在那里,你显然会做一些事情,而不是打印出你正在接收的参数。