我之前创建了以下没有has_many:和belongs_to:属性的模型。他们之前工作得很好,但是在添加has_many和belongs_to之后,它没有工作。我有一个联合表,然后尝试通过has_many:和belongs_to:将其与用户关联,如下所示。
这是属于教室的:
belongs_to :user
belongs_to :first
belongs_to :second
belongs_to :third
当我之前通过
创建对象时attributes = user_params
@user = User.find_by_id(attributes[:user_id].to_i)
attributes = classroom_params
@classroom = @user.classroom.where(:first_id => attributes[:first].to_i,
:second_id => attributes[:second].to_i,
:third_id => attributes[:third].to_i).first_or_create
在此之后无效,我尝试了以下内容:
@classroom = @user.classrooms.create(:first_id => attributes[:first].to_i,
:second_id => attributes[:second].to_i,
:third_id => attributes[:third].to_i)
并且遇到了这个错误,即使它之前有效:
ActiveRecord::UnknownAttributeError (unknown attribute: first_id):
app/controllers/api/v1/classroom_controller.rb:30:in `create'
我想让它与first_or_create一起工作,但第二种方式是一个好的起点
答案 0 :(得分:0)
如果您正在对此进行测试,则需要将其进一步降低:
@classroom = @user.classrooms.create(first_id: "1",second_id: "2", third_id: "3")
这将显示问题是您的变量还是表格。您的错误显示您的Classroom
模型无法识别first_id
属性。这表示您的first_id
db
classrooms
列
在rails控制台中,您应该这样做:
Classroom.column_names
#-> outputs column names
如果这会返回带有first_id
等列名称,那么您的关联就会出现问题。但我想你没有设置first_id
,second_id
或third_id
列