在我的Room
模型中,我有一个名为available_days
的属性,该属性存储为数组。
例如:
Room.first.available_days
=> ["wed", "thurs", "fri"]
查找阵列大小等于3的所有房间的最佳方法是什么?
我尝试过像
这样的东西Room.where('LENGTH(available_days) = ?', 3)
没有成功。
更新: available_days
的数据类型是一个字符串,但为了存储数组,我正在从我的模型中序列化该属性:
应用程序/模型/ room.rb
serialize :available_days
答案 0 :(得分:0)
由于sql
是sqlite
,因此available_days
无法考虑采用纯string
的方法。
但这是一种方法,可以不加载所有记录。
rooms = []
Room.in_batches(of: 10).each_record do |r|
rooms << r if r.available_days.length == 3
end
p rooms