Ruby on rails Rails-返回给定参数的所有用户ArgueMnError(1表示0)

Ruby on rails Rails-返回给定参数的所有用户ArgueMnError(1表示0),ruby-on-rails,model,parameter-passing,Ruby On Rails,Model,Parameter Passing,我有一个具有两列的用户模型,并尝试创建一个方法,该方法接受用户名参数并返回具有给定参数的所有用户: def find_user_byname(username) @user = User.all(username) end 但是,这将返回一个参数错误: ArgumentError: wrong number of arguments (1 for 0) Model.all应该返回all,对吗?为什么会给出错误?错误在all方法上。它不需要争论。您可以这样做: @user = User.f

我有一个具有两列的用户模型,并尝试创建一个方法,该方法接受用户名参数并返回具有给定参数的所有用户:

def find_user_byname(username)
  @user = User.all(username)
end
但是,这将返回一个参数错误:

ArgumentError: wrong number of arguments (1 for 0)

Model.all应该返回all,对吗?为什么会给出错误?

错误在
all
方法上。它不需要争论。您可以这样做:

@user = User.find_by(username: username)
假设由参数
username
表示的属性也称为
username

或者,如果希望所有用户都使用该用户名(如果可以有多个用户名),则可以使用:

@user = User.where(username: username)
find_by
只返回一条(第一条)匹配记录,
其中
返回所有匹配记录

另外,我应该指出,如果您的模型有一个名为
username
的属性,Rails将自动为您提供以下方法:

User.find_by_username

与find_by类似,它只返回具有匹配用户名的第一条记录

错误在
all
方法上。它不需要争论。您可以这样做:

@user = User.find_by(username: username)
假设由参数
username
表示的属性也称为
username

或者,如果希望所有用户都使用该用户名(如果可以有多个用户名),则可以使用:

@user = User.where(username: username)
find_by
只返回一条(第一条)匹配记录,
其中
返回所有匹配记录

另外,我应该指出,如果您的模型有一个名为
username
的属性,Rails将自动为您提供以下方法:

User.find_by_username

与find_by类似,它只返回具有匹配用户名的第一条记录

啊,哈利路亚。非常感谢你!当然不过,我注意到你还没有接受答案。这个问题还有什么需要回答的吗?啊,哈利路亚。非常感谢你!当然不过,我注意到你还没有接受答案。这个问题还有什么需要回答的吗?