我有一个正在进行的项目,我有一份清单。这个清单有一个event_id,然后每个任务有两个字段,一个用于完成任务的user_id,另一个用于日期。首先,我要做的是获取所有的检查表,这给了我一个acitverecord::所有检查表的关系。然后我只想得到完整的清单。
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, { }
scope :complete, -> { where(complete: true) }
例如,会给您一个ActiveRecord::Relation。这将与CheckList.where(complete: true)
相同。您可以使用all
将此关系转换为结果数组。
CheckList.complete #=> ActiveRecord::Relation
CheckList.complete.all #=> Array
在Rails4中,all
也会返回一个ActiveRecord::Relation,因此需要使用to_a
将其转换为数组,但目前all
将返回一个数组。