重载属性为使用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
除了打印出您要接收的参数之外,您显然会做其他事情。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...