a string/text column with comma-separated values
1
2 class SQLListColumn < String
3 SEPARATOR = ','
4 def contains(value)
5 "#{self} like '%#{SEPARATOR}#{value}#{SEPARATOR}%' or #{self} like '#{value}#{SEPARATOR}%' or #{self} like '%#{SEPARATOR}#{value}' or #{self} = '#{value}'"
6 end
7 end
Usage:
1
2 SQLListColumn.new('admins').contains('tmorgan')
...gives you a string you can use in a SQL query:
1
2 "admins like '%,tmorgan,%' or admins like 'tmorgan,%' or admins like '%,tmorgan' or admins = 'tmorgan'"
Rails usage might look like this:
1
2 Program.find(
3 :all,
4 :conditions => \
5 SQLListColumn.new('admins').contains(username) \
6 + ' or ' + \
7 SQLListColumn.new('viewers').contains(username),
8 :order => 'name'
9 )