> Hey all, > > I'm looking at a piece of code developed by an experienced Rails > developer: > > def create > @user = User.authenticate!(params[:email], params[:password]) > > @deployment = Deployment.find_by_name(params[:deployment_name]) > > end > > In that third line, he calls a class method find_by_name on the > Deployment class. So naturally I look at Deployment.rb where the class > is initialized. But there is no find_by_name method. What I see is this: > > validates_presence_of :name > > def self.get(name) > find_by_name!(name) > end > > > So why does this not return an undefined method error? There's no setter > or getter (attr_accessor) for find_by_name so it has no definition > anywhere. Second point is find_by_name! is not declared anywhere either > so we pass the name local variable into it, but it's not defined > anywhere. Anyone understand what's going on here? Thanks for response.
ActiveRecord (or Model, not sure which in Rails 3) has some dynamic finder methods. If "name" is a field for that model then "find_by_name" gets caught and converted into the appropriate method. See http://railscasts.com/episodes/2-dynamic-find-by-methods for more. Can't find a quick link to the right section of the docs, but it's there... -- 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@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.