gpt4 book ai didi

ruby-on-rails - Ruby on Rails 按 ID 以外的字段查找

转载 作者:行者123 更新时间:2023-12-04 09:40:53 25 4
gpt4 key购买 nike

好吧,再次忘记我在 Rails 中的笨拙,但我也没有找到。虽然我认为这可能是因为好吧..它不存在?

好的,所以我仍然在玩 RoR,我为员工添加了一个 Controller ,非常简单,只是一个名字、clock_no 和工资。但是如果我不想通过 ID 搜索员工怎么办?对我来说,用户按时钟编号搜索会更容易,但我不知道这是如何工作的。我假设它与这条线有关,更具体地说是 set_employee 线:

private
# Use callbacks to share common setup or constraints between actions.
def set_employee
@employee = Employee.find(params[:id])
end

# Never trust parameters from the scary internet, only allow the white list through.
def employee_params
params.require(:employee).permit(:name, :clock_no, :wage)
end

但是我可能会离开。

好的,所以我的解决方案最终只是更改模型中的 primary_key:
self.primary_key = 'clock_no'

并将返回设置为 json:
def show
@employee = Employee.find(params[:id])
respond_to do |format|
format.html
format.json { render json: @employee }
end
end

然而,我不认为这真的是最终的解决方案,我的 noobiness 可能再次表现出来,但对我来说似乎有点像曲棍球。如果您想通过说出名称或其他不是主键的内容进行搜索,并且无法像我的情况那样更改主键,那么我的问题是什么?回到文档

最佳答案

使用 where :

Employee.where(clock_no: params[:clock_no])
where返回一个 ActiveRecord 关系,所以如果你需要第一个(并且可能只有 clock_no 是唯一的实例),使用 first , 像这样:
Employee.where(clock_no: params[:clock_no]).first

这将只执行一个 SQL 查询来获取第一个匹配的员工 clock_no .

曾经有像 find_by_clock_no 这样的魔法探测器,但这些在 Rails 4 中已被弃用,我假设您正在使用它。

另见 Rails documentation有关 ActiveRecord 查询的更多信息。

关于ruby-on-rails - Ruby on Rails 按 ID 以外的字段查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17755815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com