查找数组长度等于 - Rails 4

时间:2016-11-17 22:11:51

标签: sql ruby-on-rails ruby ruby-on-rails-4

在我的Room模型中,我有一个名为available_days的属性,该属性存储为数组。

例如:

Room.first.available_days
=> ["wed", "thurs", "fri"]

查找阵列大小等于3的所有房间的最佳方法是什么?

我尝试过像

这样的东西
Room.where('LENGTH(available_days) = ?', 3)

没有成功。

更新: available_days的数据类型是一个字符串,但为了存储数组,我正在从我的模型中序列化该属性:

应用程序/模型/ room.rb

serialize  :available_days

1 个答案:

答案 0 :(得分:0)

由于sqlsqlite,因此available_days无法考虑采用纯string的方法。

但这是一种方法,可以不加载所有记录。

rooms = []
Room.in_batches(of: 10).each_record do |r|
  rooms << r if r.available_days.length == 3
end

p rooms
相关问题