繁体   English   中英

has_many 关联的 Rails 管理表单

[英]Rails Admin form for has_many association

例如,我在我的模型之一中有一个关联:

has_many :students

我们知道rails_admin在表单中创建了一个多选输入字段,用户可以在其中选择学生。

多选输入列出所有学生。

我的问题是,有没有办法过滤那些学生,只列出一些满足某些条件的学生? 如果有,我应该如何进行? 例如,我只想列出活跃的学生。

有100名学生,其中75名活跃。 我只想列出那 75 个。

在下面的屏幕截图中,我只想在左侧显示 Demo 项目。

在此处输入图片说明

是的,您可以在父模型中使用范围。

阅读的作用域阅读本作rails_admin 作用域

class Teacher < ApplicationRecord
  has_many :students
  scope :active_students, -> { where(active: true) }
end

然后您可以像这样使用它:

Teacher.first.active_students

更新:

您必须使用此处所述的自定义字段来专门自定义students的字段

是的,您可以像这样定义关联范围

  rails_admin do
    edit do
      field :students do
        associated_collection_scope do
          class_room = bindings[:object]

          proc { |scope| scope.where(class_room: class_room) }
        end
      end
    end
  end

您想在表中添加is_active(Boolean)字段以保持学生状态为活动或不活动。 然后使用范围过滤学生。

模型

class Student< ApplicationRecord
    scope :active_students, -> { where(is_active: true) }
    scope :deactive_students, -> { where(is_active: false) }
end

称为范围

@active_students = Student.active_students
@deactive_students = Student.deactive_students

它有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM