2013-01-17 3 views
3

나는 작업 영역이 포함 된 레일 앱이 있습니다. 나는 다른 시스템에서 워크 북을 로딩 할 것이다. 이 시스템은 부모 및 자식 작업 영역에 단일 테이블을 사용합니다. 동일한 테이블의 외래 키 레일

내가라는 workorders 테이블에 필드를 추가는

이이 Workorder 모델에서 코딩 권리가

을 PARENT_ID?

class ParentWorkorder 
    belongs_to :parent, class_name => "Workorder" 
    belongs_to :child, class_name => "Workorder", :foreign_key => "parent_id" 
end 

또는이 작업을 수행하지 말고 하위 작업 테이블을 만드시겠습니까? 나는 그것이 다른 시스템과 통합하는 것을 더 어렵게 만들 것이라고 생각한다.

모든 안내가 크게 감사드립니다!

+0

'class_name '앞에':'를 잊지 마라! – alexpls

답변

3

레일즈를 사용하여 단일 테이블에서이 작업을 수행 할 수 있으며, 단일 모델에서이 작업을 수행 할 수 있습니다. 내가 한 것처럼 추가 ParentWorkorder 모델로 앱을 복잡하게해야하는 이유가 표시되지 않습니다. 대신 다음을 수행합니다.

class Workorder < ActiveRecord::Base 
    belongs_to :parent, :class_name => "Workorder", :foreign_key => "parent_id" 
    has_many :children, :class_name => "Workorder", :foreign_key => "parent_id" 
end 

나는 이것이 당신에게 원하는 기능을 제공 할 것이라고 확신합니다.

+0

정보를 제공해 주셔서 감사합니다! – Reddirt

+0

감사합니다. 다시 한 번 감사드립니다. – Reddirt

+0

마이그레이션 파일에서't.references : workorder'라고 쓰면'parent_id'라는 컬럼이 생깁니 까? – Lori

2

저는 자식을 has_one 또는 has_many (부모가 둘 이상 가질 수있는 경우)로 지정합니다. 그러나 그렇습니다, 이것은 잘 작동합니다.

가능한 경우 문자열 대신 기호를 사용하는 습관을 원할 수 있습니다.

+0

입력 해 주셔서 감사합니다.하지만 문자열 대신 기호를 사용하는 예를 들어주세요. 나의 무지를 유감스럽게 생각합니다. – Reddirt

+1

"WorkOrder"대신 "work_order"대신 "parent_id"대신 다음과 같이 할 수 있습니다. parent_id 기호는 문자열과 같지만 불변하므로 자원이 적습니다. http://www.troubleshooters.com/codecorn/ruby/symbols.htm – cpuguy83