0

如何使用 ruby​​ on rails 将数组值存储在数据库中?我正在制定一个每天有 6 个课时的学校时间表。我将主题 ID 存储到一个数组中,但我只是不知道如何保存该数组的 id 值。

我的控制器:

def create
  @timetable = Timetable.new(params[:timetable])

    @buildtimetable = params[:gradeclassroomsubject_id]
      @buildtimetable.each do |subjectID|
        subjectID.save!(params[:gradeclassroomsubject_id].reject { |k,v| v.blank? })
      end
end

class CreateTimetables < ActiveRecord::Migration
  def change
    create_table :timetables do |t|
      t.integer :period_no
      t.integer :day_no
      t.integer :gradeclassroomsubject_id
      t.integer :user_id

      t.timestamps
    end
  end
end

非常感谢任何帮助,我承受着压力,这种感觉有点尴尬。

非常感谢

4

1 回答 1

0

简短的回答:不可能将许多值(数组中的所有值)存储到表的列中。

由于您只想存储subject_id,我想您已经有一个存储所有主题的表,而您唯一要做的就是设置特定用户与他/她所选择的主题之间的关系。many-to-many一段关系是你需要的。

创建一个新表:

class CreateStuendship < ActiveRecord::Migration
  def change
    create_table :stuedentships do |t|
      t.integer :subject_id
      t.integer :user_id
      # something else you want to store about this relationship, ex: year, semester...
    end
  end

应用程序/模型/学生:

class Studentship < ActiveRecord::Base
  belong_to :user
  belong_to :subject
end

应用程序/模型/user.rb:

class User < ActiveRecord::Base
  has_many :studentship
  has_many :subjects, :through => :studentship
end

应用程序/模型/subject.rb:

class Subject < ActiveRecord::Base
  has_many :studentship
  has_many :users, :through => :studentship
end

此外,我认为您可以将“period_no”和“day_no”存储到您的subjects表中,这样您就可以通过主题表知道课程的时间。如果课程的时间不固定(相同id的科目有不同的课程时间),将这两个属性存入studentship可能是个好主意。通过这样做,您不再需要 table timetables,这是不必要的。

当您想存储用户所学的科目时,只需根据您的数组迭代地创建新的学生。

最后,你可以

user = User.frist
subject = Subject.first
user.subjects  # subjects taken by the first user
subject.users  # users who take the first subject
于 2013-01-11T10:28:32.070 回答