我正在嘗試使用where
方法執行記錄搜索,其中有兩個條件,其中一個條件必須爲零。Rails在屬性爲零的地方查找記錄
我使用Rails 4,Ruby 2.0.0和Postgres。
我有一個應用程序與三個模型:用戶,Drm和DrmMorning。用戶有許多Drm,而Drm有許多DrmMornings。我正在嘗試隔離一個DrmMorning記錄,以便我可以對其進行編輯。
這是我drm_mornings控制器更新操作:
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記錄。這些記錄在創建後分兩個階段進行編輯,因此 - 如果這是nil
,則該作業的結構爲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
變量與其他地方的代碼一起分配。我使用的地方不正確?
用於檢查零值的語法是「ATTRIBUTE IS NULL」而不是「ATTRIBUTE =零」,這會在該記錄的值「零」。
如果你已經解決了這個,然後添加一個答案檢查等等它離開了未答覆的隊列。歡迎來到s/o :) – dax
謝謝 - 它不會讓我回答,直到上午,因爲我沒有足夠的代表。在明天之前,我不會選擇我自己的答案,但我會暫時選擇埃德加的,以便將其排除在隊列之外。 – user2084042