Ruby on rails Rails活动记录,其中链接正在丢失范围

Ruby on rails Rails活动记录,其中链接正在丢失范围,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,型号食品的范围已过期: 食品.rb 食品类{where('exp_date它被忽略,因为where不期望这样的作用域。但是您可以使用。替换 scope = scope.where( Food.expired.or(Food.where(status: 'COMPLETED')) ) 与 或 它被忽略,因为where不需要这样的作用域。但是您可以使用。替换 scope = scope.where( Food.expired.or(Food.where(status: 'COMPLETED

型号
食品
的范围
已过期

食品.rb

食品类作用域:过期,->{where('exp_date它被忽略,因为
where
不期望这样的作用域。但是您可以使用。替换

scope = scope.where(
  Food.expired.or(Food.where(status: 'COMPLETED'))
)


它被忽略,因为
where
不需要这样的作用域。但是您可以使用。替换

scope = scope.where(
  Food.expired.or(Food.where(status: 'COMPLETED'))
)


如果需要进一步链接
where
(使用
运算符),它是否会生成错误的查询?这取决于链接
where
条件(始终使用
添加)和
条件的方式和顺序(这将
仅显示afair之前的最新状态).
where
不需要这样的作用域-请您详细解释一下好吗?或者任何链接?只要看看:
where
接受字符串、数组或散列,但不接受作用域。仔细看,您会发现第149行的输出并不是整个查询
where(user\u id:user.id)
部分丢失。这只意味着Rails在添加的作用域上内部启动了一个数据库请求,试图使其有意义,但实际上没有将返回值添加到条件中。如果需要进一步链接
where
(使用
运算符),它是否会生成错误的查询?这取决于链
where
条件(始终添加
)和
条件(只添加afair之前的最新条件)的方式和顺序.
where
不需要这样的作用域-请您详细解释一下好吗?或者任何链接?只要看看:
where
接受字符串、数组或散列,但不接受作用域。仔细看,您会发现第149行的输出并不是整个查询
where(user\u id:user.id)
part丢失。这只意味着Rails在添加的作用域上内部启动了一个数据库请求,试图使其有意义,但实际上没有将返回值添加到条件中。
scope = scope.merge(Food.expired)
             .or(Food.where(status: 'COMPLETED'))
scope = scope.where(status: 'COMPLETED').or(Food.expired)