我只是无法弄清楚如何创建与联接表的关系。我已经阅读了关于它们的所有帖子,但主要的错误似乎是在模型的连接表中应该是单数的,这是我的。我似乎可以正确创建模型并分配它们。我有数据集项目,项目可以有多个数据集,而数据集可以属于多个项目。数据集可以是活动的或不活动的,这就是为什么我需要has_many而不是has_many_and_belongs_to来设置。 我的模型定义是:rails模型赋值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
有人可以指出我在正确的方向吗?
感谢您的关注。
尝试'@ dataset.active_data_sets.create(PROJECT_ID:PARAMS [:PROJECT_ID])' – MrYoshiji
尝试重命名你的协会 - '的has_many:active_data_sets'应该映射'ActiveDataSet' VS'Activedataset' – house9
并且还重命名'的has_many: activedatasets'到'has_many:active_data_sets' – MrYoshiji