如何解决重载属性为使用ruby / rails的方法
| 我的用户模型中有一种身份验证方法。 我希望能够像这样调用此方法User.authenticate(:email => email@exmaple.com,:password => \"123\")
和
User.authenticate(:remember_token => \"asdasds41\")
什么是正确的方法?
我瞥了一眼rails源代码(验证函数),发现该函数具有*属性,但是我没有弄清楚*代表什么以及如何读取内部变量
Tnx的帮助
解决方法
您所说的方法实际上是对值进行散列。哈希中的键(例如:remember_token,:email和:password)用作命名参数,它们在调用语句中出现的顺序无关紧要。
同样,散列通常需要用大括号括起来(例如{...}),但是在Ruby中,方法中的最后一个参数不需要这些大括号。
您所说的*属性是一种通过数组将动态数量的参数传递给方法的方法。 * attributes表示法指示Ruby将属性扩展为参数列表。
您所说的authenticate方法看起来像这样:
class User
def self.authenticate(params)
puts params[:email]
puts params[:password]
puts params[:remember_token]
end
end
除了打印出您要接收的参数之外,您显然会做其他事情。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。