2011-02-16 2 views
1

I가 다음과 같은 데이터베이스 스키마ActiveScaffold - 새 레코드를 삽입 할 때, 방법이 "belongs_to"모델을 생성되는에 열/모델에 대한 입력 필드를 활성화

create_table "addresses", :force => true do |t| 
    t.string "road" 
    t.string "city" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.integer "client_id" 
    end 

    create_table "clients", :force => true do |t| 
    t.integer "address_id" 
    t.integer "order_id" 
    t.string "first_name" 
    t.string "last_name" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

    create_table "orders", :force => true do |t| 
    t.integer "order_id" 
    t.integer "client_id" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 
end 

및 모델 :

class Client < ActiveRecord::Base 
    belongs_to :address 
end 

class Order < ActiveRecord::Base 
    belongs_to :client 
end 

class Address < ActiveRecord::Base 
end 

이 설정의 의도는 많은 클라이언트 레코드를 가지며 각 클라이언트에는 주소가 있습니다. 여러 클라이언트가 동일한 주소를 가질 수 있습니다. 주소 테이블의 client_id는이 용도로 사용됩니다.

/Client ActiveScaffold보기를 방문하여 만들기를 클릭하면 클라이언트의 새 주소 데이터를 포함하여 새 클라이언트의 데이터를 입력 할 수 있습니다.

그러나 Orders보기를 방문하여 Create를 클릭하면 새 Client를 추가하고 그에 대한 데이터를 입력 할 수 있지만 주소에는 선택 상자 만 있으므로 기존의 데이터를 선택할 때만 사용할 수 있습니다. 주소에는 새 클라이언트의 새 주소를 만들 수있는 입력란이 없습니다. 클라이언트의 새 주소를 만들려면 어떻게해야 새 클라이언트의 주소 필드를 포함시킬 수 있습니까? 사전에

덕분에

답변

0

정말 지금까지 ActiveScaffold 밀어하지,하지만 테이블에 협회가 좀 이상하게 보일 - 당신이 관계의 양쪽에 외부 키를 가지고, 즉 :

주소CLIENT_ID을 갖는다

고객는 예를 들어 주소을 CLIENT_ID, 내가 아니라 한쪽이 엄격하게 필요하다 생각했을 것

을 address_id 있습니다.

아마도 관련,하지만 당신은 관계의 양쪽에 belongs_to 한 - 아마도 한 쪽이 has_one 관계가 있어야한다, 즉 : 크리스, 도움이

class Client 
    has_one :address 
end 

class Address 
    belongs_to :client 
end 

희망.

+0

내 질문에 답변 해 주셔서 감사합니다.하지만 실제로이 목적을 위해 양식을 작성한 contollers를 작성했습니다.이 프로젝트에서는 ActiveScaffold를 더 이상 사용하지 않습니다. – denysonique

+0

@denysonique - 걱정할 필요가 없습니다. 알아두면 유용합니다. rails_admin rails3에 대한 요즘과 같은 당신이 말하길, 우리가 제대로 애플 리케이션을 위해 그것을 쓰는 라운드를 얻을 때까지 그냥 stopgap :) –

관련 문제