where
두 가지 조건이있는 where
메서드로 레코드 검색을 수행하려고합니다. 그 중 하나는 nil이어야합니다.레일은 속성이 nil 인 레코드를 찾습니다
레일 4, 루비 2.0.0 및 포스트그레스를 사용하고 있습니다.
저는 User, Drm 및 DrmMorning의 세 가지 모델로 된 앱이 있습니다. 사용자에게는 많은 Drm이 있고 Drm에는 많은 DrmMorn이 있습니다. 하나의 DrmMorning 레코드를 분리하여 편집 할 수 있도록 노력하고 있습니다. 나는 중 하나에 대한 널 값 중 하나는 두 가지 조건을 만족하는 가장 최근의 단일 레코드에 대한 데이터베이스 검색을 수행하려면 어떻게
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_mornings 컨트롤러의 업데이트 작업입니다 속성?현재 사용자의 가장 최근 Drm에 대한 첫 번째 불완전한 DrmMorning 레코드를 가져 오는 것이 목적입니다. 이 레코드는 생성 후 두 단계로 편집되므로, nil
인 경우 할당 구조는 nil
입니다.
@drm_morning
이 비어있는 메서드를 호출 할 때마다 drm/intro
에 플래시를 보내서 끝내 주셔서 감사합니다.
해당 레코드를 비워 두어서는 안됩니다.
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
내가 이것을 읽으면서는 업데이트 작업의 조건을 만족해야한다 : 내가 전화 콘솔에서 DrmMorning.last
나는이 출력을 얻을. 내가 확인하고 current_user
함수가 작동 중이고 다른 곳에서 그 코드로 @drm
변수를 할당 할 수있었습니다. 내가 잘못 사용하고 있습니까?
닐 값을 확인하기위한 구문
레코드의 값 '무'를 검색하는 대신 "ATTRIBUTE = 닐"보다 "ATTRIBUTE 는 IS NULL"이다.
는 답변은 다음 그래서 그것을 확인 추가하지 않습니다 그것은 답이없는 대기열에서 벗어났습니다. s/o에 오신 것을 환영합니다. – dax
감사합니다. 나는 충분한 AM이 없기 때문에이 AM까지 대답 할 수 없었습니다. 내일까지 내 답변을 선택할 수는 없지만 당분간은 Edgar를 대기열에서 꺼내겠습니다. – user2084042