0

我有一个我正在做的项目,我有一个清单。这个清单有一个 event_id,然后是每个需要完成的任务的 2 个字段,一个用于完成它的 user_id,一个用于日期。首先我要做的是获取所有清单,这给了我所有清单的 acitverecord::relation。然后我只想得到完整的清单。

def index
    @check_lists = CheckList.joins(:booking).joins(:contract)

    @check_lists = @check_lists.complete if params[:status] == "complete"
    @check_lists = @check_lists.incomplete if params[:status] == "incomplete"

end

我的问题是,一旦我调用了@check_lists.complete,它会自动给我模型范围内的数组吗?我是否必须在方法中传递一些东西来获取数组并运行它?然后,一旦我有了 activerecord::relation,我该如何循环运行它?

scope :complete, {  } 
4

1 回答 1

1

scope :complete, -> { where(complete: true) }

例如,会给你一个 ActiveRecord::Relation。这将与CheckList.where(complete: true). 您可以使用 将此关系转换为结果数组all

CheckList.complete #=> ActiveRecord::Relation
CheckList.complete.all #=> Array

在 Rails 4 中,all也将返回一个 ActiveRecord::Relation,因此需要使用to_a它来将其转换为数组,但现在all将返回一个数组。

于 2013-07-01T15:10:20.643 回答