단지 조인 테이블과 관계를 만드는 방법을 알 수 없습니다. 나는 그들에 대한 모든 게시물을 읽었지만, 주요 오류는 모델에 대한 조인 테이블에서 단수이어야한다는 것으로 보인다. 모델을 올바르게 만들고 할당하는 것처럼 보일 수 있습니다. 데이터 세트가있는 프로젝트가 있고 프로젝트는 여러 개의 데이터 세트를 가질 수 있지만 데이터 세트는 여러 개의 프로젝트에 속할 수 있습니다. 데이터 셋은 활성화되거나 비활성화 될 수 있습니다. 따라서 has_many_and_belongs_to 설정 대신 has_many through가 필요합니다. 내 모델 정의는 다음과 같습니다레일스 모델 할당 with has_many : through
class Project < ActiveRecord::Base
attr_accessible :name, :user_id
belongs_to :user
has_many :activedatasets
has_many :datasets, :through => :activedatasets
end
class DataSet < ActiveRecord::Base
attr_accessible :name, :project_id, :filename, :tempfilename
has_many :activedatasets
has_many :projects, :through => :activedatasets
end
class ActiveDataSet < ActiveRecord::Base
attr_accessible :active, :data_set_id, :project_id
belongs_to :project
belongs_to :dataset
end
나는 내가 PARAMS에서 PROJECT_ID있어 새로운 데이터 세트를 생성, 그래서 나는 관계를 아래와 같이 설정하기 위해 노력하고있어 경우 :
class DataSetsController < ApplicationController
def new
@dataset = DataSet.new
@dataset.activedatasets.project_id = params[:project_id]
end
end
오류 나는 유명 해지고있다 :
NameError in DataSetsController#new
uninitialized constant DataSet::Activedataset
아무도 올바른 방향으로 나를 가리킬 수 있습니까?
감사합니다. 기본적으로
has_many :active_data_sets
has_many :projects, :through => :active_data_sets
은 레일이 연결 이름에 단어를 분리하기 위해 밑줄을 사용할 것으로 예상하고 낙타 표기법으로 변환 :
has_many :active_data_sets
has_many :data_sets, :through => :active_data_sets
그리고 데이터 집합 모델
:
은'@의 dataset.active_data_sets.create을 시도' – MrYoshiji
당신의 연결 이름을 변경하려고 -'has_many을 : 그 Activedataset' – house9
'대 ActiveDataSet''에 매핑 또한'has_many의 이름을 변경해야 active_data_sets' : active_data_sets' – MrYoshiji