我只是不知道如何创建与连接表的关系。我已经阅读了所有关于它们的帖子,但主要错误似乎是模型的连接表中应该是单数的,我有。我似乎可以正确地创建模型并分配它们。我有带有数据集的项目,项目可以有多个数据集,而一个数据集可以属于多个项目。数据集可以是活动的或不活动的,这就是为什么我需要 has_many through 而不是 has_many_and_belongs_to 设置。我的模型定义是:
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
当我创建一个新数据集时,我在参数中有 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
有人可以指出我正确的方向吗?
谢谢你的关注。