has_many关联的Rails Admin表单

时间:2019-01-09 11:23:18

标签: ruby-on-rails rails-admin

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

has_many :students

我们知道rails_admin会以用户可以选择学生的形式创建一个多选输入字段。

多选输入列出了所有学生。

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

有100名学生,其中75名活跃。我只希望列出这75个。

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

enter image description here

3 个答案:

答案 0 :(得分:0)

是的,您可以在父模型中使用作用域。

Scopes阅读 阅读rails_admin Scopes

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

然后您可以像使用它一样

Teacher.first.active_students

更新:

您必须使用here之类的自定义字段来专门自定义students的那个字段

答案 1 :(得分:0)

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

onChangeHandler = event => {
  const newEmail = event.target.value
  this.setState({ info: {email: newEmail})}
}

<TextInput
  placeholder= Email
  value={this.state.info.email}
  onChangeText={this.onChangeHandler.bind(this)} />

答案 2 :(得分:-1)

您要在表中添加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

它有帮助!