例如,我在一个模型中有一个关联为:
has_many :students
我们知道rails_admin
会以用户可以选择学生的形式创建一个多选输入字段。
多选输入列出了所有学生。
我的问题是,有没有办法过滤掉那些学生,只列出一些满足某些条件的学生?如果有,我应该如何进行?例如,我只想列出活跃的学生。
有100名学生,其中75名活跃。我只希望列出这75个。
在下面的屏幕截图中,我只希望在左侧显示Demo项目。
答案 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
它有帮助!