현재 다이어트 용 추적 앱을 개발 중입니다. 각 인스턴스가 다른 테이블에서 하나의 food
을 참조하고 또 하나의 테이블에서 measurement
의 단위를 참조하는 FoodEntry 모델이 있습니다.레일에서 관련 모델 확인
food
과 관련된 것으로 (I 외부 데이터와 함께 일하고 있어요 때문에) 물건이
measurements
테이블의 각 항목이 설정되어 있다는 점이다
class FoodEntry < ActiveRecord::Base
belongs_to :food
belongs_to :measurement
validates :food, presence: { message: 'must exist' }
...
end
즉 측정은 식품에 속한다 그리고 음식은 많은 측정이 있습니다
class Food < ActiveRecord::Base
has_many :measurements
...
end
class Measurement < ActiveRecord::Base
belongs_to :food
...
end
내 질문은, 내가 food_entry
에 참조하고있어 특정 measurement
은 또한 food.measurements
중 하나입니다 확인하는 올바른 방법은 무엇입니까?
validate :measurement_must_be_associated
def measurement_must_be_associated
unless food.measurements.include? measure
errors.add(:measurement, 'is not associated with that food')
end
end
이 지정 유효성 검사가 작동하지만, 나는 그것을 할 수있는 가장 깨끗한 방법 확실하지 않다 :
현재 내FoodEntry
모델에서 나는이 일을하고 있습니다.
내가 대신이 일을 시도 :
validates :measurement, inclusion: { in: food.measurements }
를하지만 나에게 레일 콘솔에서 FoodEntry.new(food_id: 1, measurement_id: 1)
를 호출하는 오류를 제공합니다 (실제 id
들 무관) :
NameError: undefined local variable or method `food' for FoodEntry (no database connection):Class
에 in: self.food.measurements
사용 검증은 아무런 차이를 만들지 않았습니다. 도움?