如何使用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
任何帮助都非常感谢我在压力之下,这有点令人尴尬。
非常感谢
答案 0 :(得分: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
表中,这样您就可以通过主题表知道课程的时间。如果课程的时间不固定(具有相同身份的科目具有不同的课程时间),将这两个属性存储到studentship
可能是个好主意。通过这样做,您不再需要表timetables
,这是不必要的。
当您想要存储用户拍摄的主题时,只需根据您的数组迭代创建新的学生。
最后,你可以
user = User.frist
subject = Subject.first
user.subjects # subjects taken by the first user
subject.users # users who take the first subject