나는 프로그래밍에 관해서는 조금 느리지 만, 나는 그것을 즐기고 최대한 많이 배우려고 노력한다. 미리 사과드립니다. 제 질문으로는 분명하지 않습니다.find_by_or_initialize_by * _and_ * 및 증분!
DJ가 노래를 검토하고 노래 리뷰를 주별로 그룹화하는 유일한 목적의 앱이 있습니다. 5 분야 ... songid, 주, stdjlike, stthinkclublike, stplait (내가 아는 끔찍한 이름들,하지만 그들은 내가 무엇인지 기억할 수있게 도와줍니다 :)).
일단 사용자가 노래를 검토하기로 결정하면 1 ~ 5의 척도로 응답되는 3 개의 질문을 받게되고 양식은 3 개의 답변과 사용자 상태 및 노래 ID를 수집합니다. 대부분의 경우 데이터베이스는 상태와 노래 ID를 찾은 다음 새 데이터를 3 개의 질문 필드 (djlike, thinkclublike, plait)에 추가합니다. 그러나 새로운 주에있는 사용자의 노래에 대한 첫 리뷰는 새로운 기록을 만들어야합니다.
"뉴욕"사용자가 처음으로 리뷰 (노래) "123"사용자가되면 노래 ID, 주 이름을 가진 새 레코드를 만들고 리뷰 값을 다음에 추가합니다. 3 열 stdjlike, stthinkclublike 및 stplait. 다음 사용자는 다른 사용자가 뉴욕에서 노래 "123"을 작성하여 리뷰를 작성하며 stdjlike, stthinkclublike 및 stplait 값을 이전 검토에 추가하여 레코드를 업데이트합니다.
저는 일주일 내내 살펴 보았지만 비슷한 문제는 아니지만 같은 문제에 대한 많은 좋은 해결책을 찾고 있습니다 (A well documented solution here). 저는 고정 숫자가 아닌 값으로 업데이트하고 있기 때문에 증가분을 사용하기로 결정했습니다. 시도했지만 시도 할 수 없습니다.
나는 무엇이 작동하는지 시작했다. reviewstate 컨트롤러의 create는 단순한 .new 및 .save 일 때 레코드를 저장합니다. 그래서 나는 그것을 여기에서 ..로 바 꾸었습니다.
def create
@reviewstate = Reviewstate.find_or_initialize_by_songid_and_state(song.id, current_user.state)
@reviewstate.stdjlike.increment!(:stdjlike, reviewstate.stdjlike)
@reviewstate.stthinkclublike.increment!(:stthinkclublike, reviewstate.stthinkclublike)
@reviewstate.stplait.increment!(:stplait, reviewstate.stplait)
@reviewstate.save!
end
작동이 멈 춥니 다. 나는 다른 유사 및 방법을 시도했다, 이것은 나가 가까운 감을 느낄 때이다. 저를 도와주세요. 4 일이되었습니다 :).
미리 감사드립니다.
두 답변 모두 매우 잘 설명되어 있고 매우 도움이되었지만 실제로는이 방향으로 계속하는 방법에 대한 질문에 대한 대답이라고 생각합니다. 처음에는 IF 성명서라고 생각했지만, 온라인으로 읽고 연구를 많이할수록 더 혼란스러워졌습니다. 다른 대답에 대해 언급했듯이이 섹션을 원래 디자인으로 더 간단하게 만들 예정입니다. 그러나 IF 문을 다른 매우 유사한 부분에 사용할 것입니다. 당신의 공헌에 대해 대단히 감사합니다. 두 가지 다른 대상에 대한 설명이 제 이해에 도움이되었습니다. – Dol
당신이 환영받는 것 이상입니다. 다른 것을 물어보고 싶다면, 주저하지 말고 :) – Spyros