Rails控制器列表,如果在另一个控制器中条件为假

时间:2015-03-23 15:19:33

标签: ruby-on-rails controller

我的控制器中的def有问题

  def wait
@evaluations3 = Affiliation.where("go_auth =true") and Affiliation.evaluation.where("ready = false") 

我想只显示附属于这两个条件=真实

3 个答案:

答案 0 :(得分:0)

从我所看到的,你有一个控制器,其中index是一个动作。 在操作中,您有几个模型,您在其上调用where查询。

此外,您希望显示对象,其中Affiliation.where("go_auth =true") and Evaluation.where("ready = false")位于索引操作中。

查看Active record query interface的联接。它可能会为您提供方向。

IMO,你必须尝试将你的Affiliation.where("go_auth =true") || Evaluation.where("ready = false")推入模型中/创建一个同样的PORO。这将有助于您保持控制器的理智。

答案 1 :(得分:0)

目前还不清楚你想做什么,但如果情况如下:

class Affiliation < ActiveRecord::Base
  belongs_to :evaluation
  #fields - go_auth: boolean

class Evaluation < ActiveRecord::Base
  has_many :affiliations
  #fields - ready: boolean

并且你想加载Affiations,其中go_auth为true且相关评估的ready字段为true,那么我认为这应该有效

@affiliations = Affiliation.include(:evaluation).where(["go_auth = ? and evaluations.ready = ?", true, true])

如果这些不是您的要求,请说明它们是什么。

答案 2 :(得分:0)

这解决了我的问题

def wait
@evaluations3 = Evaluation.includes(:affiliation).where("go_auth = true").where("ready = false").references(:affiliation)