我有3个模特
belongs_to :hiring_procedure
)has_many :jobs, has_many :hiring_procedure_stages
)belongs_to :hiring_procedure
)这意味着在我正在显示作业的视图中,我可以访问不同的招聘阶段,如下所示,这是正常的。
job.hiring_procedure.hiring_procedure_stages
我的问题是,上面的代码将返回所有阶段,如果我只想要模型deleted
的{{1}}列为hiring_procedure_stage
我实际上在下拉菜单中显示不同的阶段供用户选择,我不希望用户看到已删除的阶段(删除意味着模型{{1}的删除值为f
},它是一个布尔值)
t
有没有办法在视图中实现这一点,或者更好地将此逻辑放在另一个变量的控制器中并在视图中访问它?
答案 0 :(得分:2)
在 hiring_procedure_stage.rb 模型中创建范围
scope :active, -> { where(deleted: false) }
现在您可以将上述范围用作:
job.hiring_procedure.hiring_procedure_stages.active
这只会让hiring_procedure_stages
deleted is false
from multiscorer.multiscorer import MultiScorer
答案 1 :(得分:2)
另一种方法是定义与范围的关系,因此始终会考虑未删除的阶段。
为此,请将范围添加到关联:
class HiringProcedure < ApplicationRecord
has_many :hiring_procedure_stages, -> { where(deleted: false) }
end
每次使用
hiring_procedure.hiring_procedure_stages
您将获得所有未删除的阶段。
当然,只有在您永远不会尝试删除已删除的阶段时,才推荐使用此解决方案。