Ruby on rails Rails-显示关系数据,但带有条件
我有三种型号Ruby on rails Rails-显示关系数据,但带有条件,ruby-on-rails,Ruby On Rails,我有三种型号 工作(属于:招聘程序) 招聘程序(有很多:工作,有很多:招聘程序阶段) 招聘流程阶段(属于:招聘流程) 这意味着在显示工作的视图中,我可以访问不同的招聘阶段,如下所示,这些阶段工作正常 job.hiring_procedure.hiring_procedure_stages 我的问题是,上面的代码将返回所有阶段,如果我只想要modelHipping\u procedure\u stage的deleted列为f 实际上,我在下拉菜单中显示了不同的阶段供用户选择,我不希望用户看到删除
属于:招聘程序
)有很多:工作,有很多:招聘程序阶段
)属于:招聘流程
)job.hiring_procedure.hiring_procedure_stages
我的问题是,上面的代码将返回所有阶段,如果我只想要modelHipping\u procedure\u stage
的deleted
列为f
实际上,我在下拉菜单中显示了不同的阶段供用户选择,我不希望用户看到删除的阶段(删除意味着删除的值为t
,对于型号租用程序\u阶段
,它是一个布尔值)
是否有一种方法可以在视图中实现这一点,或者更好地将此逻辑放在另一个变量的控制器中,并访问视图中的逻辑?在招聘程序\u stage.rb模型中创建一个范围
scope :active, -> { where(deleted: false) }
现在,您可以将上述范围用作:
job.hiring_procedure.hiring_procedure_stages.active
这将只返回您的
招聘过程阶段
,其中删除为false
在招聘过程阶段.rb模型中创建范围
scope :active, -> { where(deleted: false) }
现在,您可以将上述范围用作:
job.hiring_procedure.hiring_procedure_stages.active
<>这只会使您返回<代码> HIGIGIONPROCEDURE OFFECTION<代码>其中<代码>删除为false > P>另一种方式是定义与该范围的关系,因此它将<强>永远>强>考虑未被删除的阶段。 为此,请将范围添加到关联中:
class HiringProcedure < ApplicationRecord
has_many :hiring_procedure_stages, -> { where(deleted: false) }
end
您将获得所有未删除的阶段
当然,如果你永远不会尝试删除被删除的阶段,那么这个解决方案是被推荐的。 < P>另一种方法是定义与那个范围的关系,所以它将<强>永远>强>考虑未被删除的阶段。 为此,请将范围添加到关联中:
class HiringProcedure < ApplicationRecord
has_many :hiring_procedure_stages, -> { where(deleted: false) }
end
您将获得所有未删除的阶段
当然,只有当您永远不会尝试删除阶段时,才建议使用此解决方案。谢谢,这也是一个简洁的解决方案。谢谢,这也是一个简洁的解决方案。