2011-08-02 4 views
0

저는 Ruby on Rails (3.0)에서 프로젝트 관리 응용 프로그램을 빌드하고 있습니다. 프로젝트 열의 업데이트에 대한 프로젝트의 모든 작업을 업데이트하는 방법을 파악하려고합니다. 여기 상황이 있습니다.after_save를 사용하여 모든 belongs_to 레코드를 업데이트하십시오.

예상대로 모든 프로젝트를 /projects/index.html.erb에 나열하고 있습니다. 사용자가 목록을 정렬 할 때 sortable 목록 (from Ryan Bates tutorial)을 사용하여 project.position 필드를 업데이트합니다.

프로젝트 목록을 정렬 할 때 project.position 열이 각 종류별로 업데이트되며 프로젝트가 belong_to 인 task.project_position 열을 업데이트하려고합니다. 그래서 task.project_position = project.position.

나는 이것이 프로젝트 모델의 after_save를 통해 수행되는 것으로 추측하고 있지만 완전히 잘못 될 수 있습니다.

답변

1

값을 여러 번 저장하지 마십시오 .redundantunnecessary은 매우 드문 경우지만 저장합니다. 루비/레일에서

당신이 (당신의 작업 모델)과 같은 위치 방법에 대한 프로젝트에 Task에서 delegate 할 수있는 다음을 반환하는 장소에두고

delegate :position, :to => :project, :prefix => true, :allow_nil => true 

, 당신은 지금 task.project_position이 프로젝트의 모든 작업에 걸쳐 해당 데이터 요소가 중복되지 않고 둘 사이의 연결을 통해 project.position 값.

이 모든 것은 작업 belongs_to :project (그리고 아마도 프로젝트 has_many :tasks)으로 가정합니다. 당신은 당신이 정말로 어떤 이유로 드 정규화 된 경로를 이동해야한다 느끼는 경우

more detailed explanation.

는 다음 네, after_save 그것을 할 수있는 장소가 될 것입니다.

관련 문제