結合テーブルを使用してリレーションを作成する方法がわかりません。それらに関するすべての投稿を読みましたが、主なエラーは、モデルへの結合テーブルで、私が持っている特異なものでなければならないということのようです。モデルを正しく作成して割り当てることができます。データセットを含むプロジェクトがあり、プロジェクトには複数のデータセットを含めることができますが、データセットは複数のプロジェクトに属することができます。データセットはアクティブでも非アクティブでもかまいません。そのため、has_many_and_belongs_toセットアップの代わりにhas_manyスルーが必要です。私のモデル定義は次のとおりです。
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
誰かが私を正しい方向に向けることができますか?
ご清聴ありがとうございました。