2014-06-16 3 views
1

약간의 도움이 필요합니다. Client와 Assignment 모델이 있습니다. 할당 테이블은 이미 데이터로 가득차 있습니다. 클라이언트를 만들 때 클라이언트 생성 양식에 할당 된 확인란을 추가했습니다. 체크 박스는 할당 테이블의 데이터로 채워집니다. 관리자는 클라이언트에 추가 할 할당을 선택하고 클라이언트 및 ClientAssignments를 저장할 수 있습니다. 이제 관리자가 양식을 제출 한 후에 ClientAssignments를 어떻게 저장할 수 있을지 궁금합니다. 컨트롤러에서 무엇을해야합니까?확인란 값을 데이터베이스에 저장하는 방법은 무엇입니까?

create_table "client_assignments", force: true do |t| 
    t.integer "client_id" 
    t.integer "assignment_id" 
    end 

체크 박스 :

<%= f.collection_check_boxes :assignment_ids, Assignment.all, :id, :name %> 

내가 컨트롤러에서 선택한 체크 박스를 가져오고 새 행을 만드는 방법을

class Client < ActiveRecord::Base 
    has_many :assignments, :through => :client_assignments 
    has_many :client_assignments 
end 

class Assignment < ActiveRecord::Base 
    has_many :clients, :through => :client_assignments 
    has_many :client_assignments 
end 

class ClientAssignment < ActiveRecord::Base 
    belongs_to :client 
    belongs_to :assignment 
end 

ClientAssignment 테이블은 클라이언트 ID와 할당 ID를 가지고 : 이것은 내 코드입니다 ClientAssignement 테이블에 있습니까? 고맙습니다!

+0

가능한 한 http://stackoverflow.com/questions/19634213/rails-how-to-store-has-many-checkboxes-association-in-database – jcm

+0

"레일은 has_and_belongs_to_many"에 대해 Google이 있습니다. 이 일을 직접해야합니다. –

답변

0

다른 사용자와 마찬가지로 has_many through 대신 has_and_belongs_to_many 연관이 필요합니다. HABTM만으로 충분하지 않은 경우 관계에 추가 필드가 필요할 때 HMT를 사용해야합니다. 또한 Rails 명명 규칙으로 인해 조인 테이블은 AssignmentsClients라고해야합니다. 두 모델은 모두 복수형이어야하며 사전 순으로 정렬되어야합니다. 그래서 여기에 당신이 할 수있는 것입니다 :

class Client < ActiveRecord::Base 
    has_many_and_belongs_to_many :assignments 
end 

class Assignment < ActiveRecord::Base 
    has_many_and_belongs_to_many :clients 
end 

AssignmentsClients 테이블 마이그레이션 :

모든 나머지는 레일에 의해 처리됩니다
create_table :assignments_clients, id: false do |t| 
    t.integer :assignment_id 
    t.integer :client_id 
end 

.

관련 문제