Skip to content

Instantly share code, notes, and snippets.

@ecin
Created June 13, 2011 04:12
Show Gist options
  • Save ecin/1022308 to your computer and use it in GitHub Desktop.
Save ecin/1022308 to your computer and use it in GitHub Desktop.
def method_missing(name, *terms)
if match = name.to_s.match(/search_by_(?<columns>[_a-zA-Z]\w*)/)
string_columns = self.columns.select {|column| column.type == :string }.map(&:name)
columns = match[:columns].split('_and_')
super unless columns.all? {|column| string_columns.include?(column) }
query = columns.inject({}) do |query, column|
query.merge column => terms.shift
end
search(query)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment