【问题标题】:How can I insert many records from Controller in rails?如何在 Rails 中插入来自 Controller 的许多记录?
【发布时间】:2020-05-15 18:28:39
【问题描述】:

我有 Classroom 模型,例如:

class Classroom < ApplicationRecord
    has_many :students,dependent: :destroy
end

我有学生模型喜欢:

class Student < ApplicationRecord
    belongs_to :classroom, optional: true
    validate :check_student_limit
    def check_student_limit
        if Student.where(classroom_id: self.classroom_id).count > 4
            self.errors.add(:name, "Over limit of student in classroom")
        end
    end
end

教室has_many学生so 我想更新所选学生的课堂。

假设我有一个 id: 4 的教室。 现在,我选择了那个教室的三个学生,他们的 id 为 (14,15,16),我还选择了我想将这三个学生移动到哪个班级的 id。假设我要移动 Classroom_id 中的这三个学生:5, 这三个学生应该搬进 5 号教室,三个学生从 4 号教室删除。

我创建了一个用于选择通过的学生的新表单,并为这些学生创建了一个新教室。 在我的这个表单的动作控制器中 我得到了选定的students_ids 和新的教室 ID

但现在我被困在这里了。 如何将所有这些选定的学生插入选定的教室? 我正在为解决这个问题而烦恼,如果可以,请帮助我。

这里的图片供参考。

这是我如何选择学生和新教室:

我在控制台中获得了以下参数:

【问题讨论】:

  • 您能否添加相应的控制器代码并具体说明您在执行此操作时遇到的错误?会有帮助的
  • 可以以this为例。
  • 我想将选定的学生插入选定的教室。我也想删除以前教室的学生。我该怎么做???
  • 我已经有一个在教室控制器中创建新教室的表格

标签: ruby-on-rails ruby activerecord model-associations


【解决方案1】:

建议:你写的太多关于你的问题,这意味着很多人可能会因为原因跳过 TLDR。

您真正的问题是您有一组 student id 和一个新的 classroom id,但您不知道如何立即更新它们,即添加到新教室并从以前的教室中删除。

您可以通过在您发布到的控制器操作中将他们的 classroom_idx 更改为 y 来实现:

  def update_class
    Student.where(id: params[:student_ids]).update_all(classroom_id: 5)
    # This will move them to classroom 5 and remove from classroom 4.
  end

您只需要使用 update_all。如果这个问题还有更多,请在下方评论,我会更新答案。

【讨论】:

  • 这是我的工作。非常感谢您的回答。
  • @bhadreshChotaliya 很高兴我能提供帮助。你能接受答案并投票吗?谢谢。
  • 你能帮我解决这个问题吗? stackoverflow.com/q/59987284/12594070
  • @bhadreshChotaliya 您应该接受这个答案,如果它对您有帮助,请点赞。当然,我会看看你的另一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-25
  • 2013-01-03
  • 2012-07-03
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多