我的用户模型中有一个身份验证方法。
我希望能够像那样调用这个方法
User.authenticate(:email => email@exmaple.com, :password => "123")
和
User.authenticate(:remember_token => "asdasds41")
正确的做法是什么?
我瞥了一眼 rails 源代码(验证函数),我注意到该函数获取 * 属性,但我没有弄清楚 * 代表什么以及如何读取内部变量
感谢帮助
最佳答案
您所说的方法实际上是对值进行哈希处理。散列中的键(例如 :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
除了打印出您收到的参数之外,您显然会做一些其他事情。
关于ruby-on-rails - 使用 ruby/rails 将属性重载到方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6118204/