2016-09-22 3 views
0

레일과 루비를 배우려면, 첫 번째 앱을 만듭니다. 선택 기준과 일치하는 레코드 목록 (인덱스 등)을 얻는 방법을 찾으려고 노력했습니다. 이 뷰를 사용하여 이벤트의 조건을 확인합니다 (저장 버튼 클릭). 내 컨트롤러에서, 예를 들어 내가 가진 :레일 : 선택한 레코드의 인덱스를 얻으십시오.

def index 
    @annotations = Annotation.all.order(:created_at) 
end 

지금이 모든 목록 - 어떻게이 레코드의 필드 1 개 일치 필드 (1) 내가 & & 필드 2 개 일치 필드 2 레코드를 저장하는 주석을 제한합니까? 선택한 레코드의 수가 0보다 큰 경우 저장이 발생하지 않아야합니다. 콜백 before_save처럼 보입니다.

다르게 말할 수 있습니다 : 필드 1과 필드 2의 값이 일치하는 주석의 수를 계산하고 싶습니다. 나는 희망 제대로

@annotations = Annotation.where(field_1: 'value_you_want_to_search').order(:created_at) 

질문을 가지고 있다면

+0

가 왜 고유성 제약 –

+0

을 적용하지 않는 중복 레코드를 저장하지 않습니다 –

답변

1

validates_uniqueness_of

class Annotation < ActiveRecord::Base 
    validates_uniqueness_of :field_1, scope: [:field_2, :field_3] 
end 

사용하여 고유성 검증을 적용은 가능 - 어떻게 그 일이 것? 조건부 유일성

+0

이해할 수 없으십니까? –

+0

@DimitrideRuiter'validates_uniqueness_of'는'before_save' 콜백을 실행하고'field_1','field_2' 및'field_3' 같은 속성을 가진 레코드가 있는지 확인합니다 if 레일이 새 레코드를 저장하지 않을 것이며 경고를 줄 것입니다 –

+0

http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#method-i-validates_uniqueness_of –

0

사용 where,하는 데 도움이! 이것은 당신이

관련 문제