점검에서, 사용자 모델의 메소드를 체크 아웃Ruby on Rails : 어디에서 query?
def check_in(meeting)
if meeting.nil?
false
elsif Attendance.where({user: self, meeting: meeting}).any?
false
else
attendance = Attendance.create({user: self, meeting: meeting})
attendance.in_time = Time.now
end
end
def check_out(meeting)
if meeting.nil?
false
else
attendance = Attendance.where({user: self, meeting: meeting})
attendance.present = true
attendance.out_time = Time.now
end
end
사용자 모델에 대한 RSpec에 테스트
describe 'check_out' do
before(:each) do
@user = FactoryGirl.create(:user)
@meeting = FactoryGirl.create(:meeting)
@user.check_in(@meeting)
expect(@meeting.users).to include @user
expect(@user.meetings).to include @meeting
end
it 'checks out the user' do
expect(@user.check_out(@meeting)).to be_truthy
end
end
내가 열 출석 모델이
Failures:
1) User check_out checks out the user
Failure/Error: expect(@user.check_out(@meeting)).to be_truthy
NoMethodError:
undefined method `present=' for #<ActiveRecord::Relation []>
# ./app/models/user.rb:84:in `check_out'
# ./spec/models/user_spec.rb:127:in `block (3 levels) in <top (required)>'
실패 로그 : ID (int), user_id (int), meeting_id (int), in_time (시간), out_time (시간), present (부울)입니다.
참석자 수는 has_many이며 참석자 수는 has_many 회의입니다.
회의 참석자 수는 has_many이며 참석자 수는 has_many입니다.
출석은 사용자와 회의 모두에 속합니다.
사용자가 체크인하면 check_in 메소드를 사용하여 시간을 기록합니다. check_out을 실행하면 check_out 메소드가 실행되어 출석을 확인하고 시간을 기록합니다. check_in에 대한 테스트는 완벽하게 실행되지만 check_out에 대해서는 실패합니다.
내 질문은 어디에 변수를 (미안 해요, 정말 새로운 해요) 및 열을 잘못 할당 할 경우 (어떻게 그것을 열로 계산하기 때문에 변수에 위치 쿼리를 할당하는 방법에 오류가 있습니다. 방법?) If
나는 무엇이 잘못되었는지 전혀 모른다. 누군가가 나를 도와 주면 대단 할 것이다. 고마워. : 당신은 단순히과 같이, 첫 번째를 잡아 가지고 끝까지 좁은 방을 추가 할 수 있습니다
attendance = Attendance.where({user: self, meeting: meeting})
:]