첫 번째로 나쁜 영어를 유감스럽게 생각합니다. 나는 아직도 배우고있다.collection_select를 사용하여 validates_uniqueness_of를 사용하면 Ruby on Rails 오류가 발생합니다.
문제
has_many :registers
has_many :solutions, through : :registers
솔루션
- :
나는 내 DB에서 3 개 테이블이210
has_many :problems, through : :registers
등록
belongs_to: problem
belongs_to :solution
시스템이 잘 작동한다. 3 개의 테이블 모두에 새로운 데이터를 삽입 할 수 있습니다. 문제와 해결 방법을 선택할 수있는 테이블/모델 Register
에 대한 전망에서
= form_for @register do |f|
.field
= f.label :problem_id
= collection_select(:register, :problem_id, @problems, :id, :name, {}, { :multiple => false })
.field
= f.label :solution_id
= collection_select(:register, :solution_id, @courses, :id, :name, {}, { :multiple => false })
.field
= f.label :entry_at
= f.datetime_select :entry_at
.actions = f.submit
내가 Register
이 유효성 검사를 추가 할 경우에만 나타납니다 문제 : 그런 다음
validates_uniqueness_of :student_id , scope: :course_id
내가 얻을 :
> undefined method `map' for nil:NilClass
> = collection_select(:register, :problem_id, @problems, :id, :name, {}, { :multiple => false })
그리고 이유를 모르겠습니다.
그래서, 컨트롤러에 의해 검증을 시도 :
def create
@register = Register.new(register_params)
problem_id = @register.problem_id
solution_id = @register.solution_id
if Register.exists?(['problem_id LIKE ? AND solution_id LIKE ?', problem_id, solution_id ])
render 'new'
else
@register.save
respond_with(@register)
end
end
그러나 오류가 남아있다.
나는 그 원인이 collection_select라고 생각하지만, 그것을 해결하는 방법을 모른다.
한 번 더 말하면서 나는 3 개의 DB 테이블 모두에서 날짜를 유지할 수 있습니다. 그러나 중복을 피하려고하면 오류가 나타납니다.
@problems가 설정되고 있습니까? 'collection_select (: register, : problem_id, @problems, : id, : name, {}, {: multiple => false})' – Eric
@Eric. 그것은 새로운 RegisterController, def new에 설정됩니다. – Paulo