You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于条件销毁Liabilities表记录失败,求原因分析

问题原因及修正方案

核心问题点

  • 变量名冲突+判断逻辑错误
    你写的person = person.find_by_id(5)存在两个问题:一是模型名应该大写(Person),和小写变量名person重名会导致逻辑混乱;二是find_by_id(5)返回的是Person对象,不是数字5,所以if person == 5的条件永远不成立,page.destroy根本不会执行。

  • 查询条件缺失+集合处理错误
    Liability.where(page: 'show')只筛选了page为'show'的记录,没有加上person_id: 5的关联条件,就算执行销毁操作,也会删掉所有page='show'的记录,不是你要的目标记录。另外,where返回的是记录集合,需要用destroy_all才能批量销毁,单条记录销毁要用destroy。

正确代码示例

直接定位目标记录并销毁:

# 找到符合条件的单条记录,存在则销毁,不存在不报错
Liability.find_by(person_id: 5, page: 'show')&.destroy

# 或者分步处理(适合需要额外判断的场景)
target_liability = Liability.find_by(person_id: 5, page: 'show')
target_liability.destroy if target_liability

内容的提问来源于stack exchange,提问作者Solitary Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:31:33