gpt4 book ai didi

ruby-on-rails - Rails 查找属性为 nil 的记录

转载 作者:行者123 更新时间:2023-11-29 11:57:15 24 4
gpt4 key购买 nike

我正在尝试使用 where 方法进行记录搜索,其中有两个条件,其中一个必须为 nil。

我正在使用 Rails 4、Ruby 2.0.0 和 Postgres。

我有一个包含三个模型的应用程序:User、Drm 和 DrmMorning。用户有很多 Drm,而 Drm 有很多 DrmMornings。我试图隔离单个 DrmMorning 记录,以便我可以对其进行编辑。

这是我的 drm_mornings Controller 中的更新操作:

def update
@user = current_user
@drm = Drm.where(user_id: @user.id).last
@drm_mornings = DrmMorning.where(" drm_id = ? AND location = ?", @drm.id, nil).first || DrmMorning.where(" drm_id = ? AND happy = ?", @drm.id, nil).first
if @drm_mornings.nil?
flash[:error] = "thanks for finishing up"
render 'drm/intro'
elsif @drm_mornings.update_attributes(morning_params)
redirect_to 'ep_feelings'
else
flash[:error] = "something is broken"
render 'drm/intro'
end
end

如何对满足两个条件(其中一个是其中一个属性的空值)的最近单条记录执行数据库搜索?

目的是为当前用户最近的 Drm 抓取第一个不完整的 DrmMorning 记录。这些记录在创建后分两个阶段进行编辑,因此 - if this is nil, if that is nil 赋值结构。

每当我调用该方法时,它的行为就像 @drm_morning 是空的,发送到 drm/intro 并闪现表示感谢完成。

不过,该记录不应为空。在控制台中,当我调用 DrmMorning.last 时,我得到以下输出:

DrmMorning id: 8, name: "breakfast", begain: "7:00", end: "7:30", drm_id: 3, user_id: 1, created_at: "2013-10-12 20:04:29", updated_at: "2013-10-12 20:04:29", commuting: nil, shopping: nil, housework: nil, other_action_words: nil, other_action: nil, location: nil, interaction: nil, spouse: nil, friend: nil, co_worker: nil, parent: nil, child: nil, client: nil, boss: nil, student: nil, other_person: nil, other_person_words: nil, happy: nil, depressed: nil, angery: nil, enjoy: nil, pain: nil, fatigue: nil, active: nil, person_id: nil

当我阅读这篇文章时,它应该满足更新操作中的条件。我检查过 current_user 函数正在运行,并且我已经能够将 @drm 变量分配给其他地方的代码。我在哪里使用不正确吗?


检查 nil 值的语法是“ATTRIBUTE IS NULL”而不是“ATTRIBUTE = nil”,后者在记录中查找值“nil”。

最佳答案

where 函数中检查 nil 值的语法不是

ATTRIBUTE = nil

而是

ATTRIBUTE IS nil

关于ruby-on-rails - Rails 查找属性为 nil 的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19338727/

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