添加has_many:和belongs_to后出现问题:

时间:2014-03-20 04:12:36

标签: ruby-on-rails activerecord

我之前创建了以下没有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一起工作,但第二种方式是一个好的起点

1 个答案:

答案 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_idsecond_idthird_id