2009-09-13 4 views
1

두 속성 'a_value'및 'b_id'가 있습니다. (실제 이름이 아닙니다.) 'a_value'는 'b_id'로 참조되는 모델 'B'의 정보를 사용하여 파일 시스템에 저장됩니다. 예를 들어레일에서 새 모델 인스턴스의 지정 순서를 변경할 수 있습니까

params[:foo] = {"a_value"=>"nifty value","b_id"=>"38"} 

:

그래서, 내 PARAMS 객체는 것 같습니다.

foo_controller.rb에서 지금

:

foo = Foo.new(params[:foo]) 

하지만이 실패합니다. Foo.a_value = (값)에서

ActiveRecord::RecordNotFound: Couldn't find Foo without an ID

내가 가진

레일는 존재에도 불구하고, 알파벳 순서로 할당을하고 b_id이 없을 때 당황한다처럼 보이는
... 
self.my_path = self.b_id.the_path 
... 

params 해시 및 유효성 검사를 통과합니다.

강제로이 과제를 수행 할 수 있습니까? 또는 질량 할당의 나머지가 발생하기 전에 b_id 할당을 수행 할 before_filter를 만들 수 있습니까?

답변

0

나는 그것을 알아 냈다! 당신은 당신의 검증 순서에 있는지 확인해야

foo = Foo.new 
foo[:b_id] = params[:foo][:b_id] 
foo.update_attributes(params[:foo]) 
if foo.save... 

,하지만 작동은 다음과 같습니다

이 작업을 수행하는 방법입니다.

이름을 바꾸지 않고 속성의 부분 정렬을 지정할 수 있다면 좋을 것입니다.