I saw a recent post by someone suggesting that since
find_by_name_and_school_id_and_deleted_at(''abc'',34,nil)
was somewhat long-worded, they would prefer a syntax somewhat like
find_by :name => ''abc'', :school_id => 34, :deleted_at
=> nil
I thought this might be nice, too. It seems more ruby-like.
Is there anything like this out there? Would there be interest in
creating something like this or gem-ifying it?
It seems like it would allow for even nicer syntaxes, like
find_by :name__includes ''abc'', :school_id => 34,
:deleted_at => nil
Here is the beginnings of one that I coded up.
Thoughts?
Thanks!
-R
class ActiveRecord::Base
def self.find_by specified_conditions, options = {}
# note that options could already contain ''conditions'' so
we
accomodate for that
conditions_and_vals = options[:conditions] # an array with [string,
values to insert]
if conditions_and_vals
conditions = conditions[0]
values = conditions[1..-1]
else
conditions = "true "
values = []
end
for column_name, setting in specified_conditions do
column_name = column_name.to_s
if column_name.include? ''__''
column_name, desired_search_type =
column_name.split(''__'')
case desired_search_type
when ''equals''
style = ''=''
when ''contains'', ''includes''
style = ''LIKE''
setting = "%#{setting}%"
else
raise ''undone desired search type '' +
desired_search_type
end
else # assume it is an equals
style = ''=''
end
value = column_name
if setting == nil # like they passed :deleted_at => nil
raise ''used nil without equals isnt coded yet'' unless
style =''equals''
style = ''is''
end
conditions << " and #{value} #{style} ? "
values << setting
end
options[:conditions] = [conditions] + values
# todo could add :first in here somewhere. For now just do :all
return self.find(:all, options)
end
end
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---