v2.2.1 - Show latest stable - 0 notes - Class: ActiveRecord::Base
method_missing(method_id, *arguments, &block) private

Enables dynamic finders like find_by_user_name(user_name) and find_by_user_name_and_password(user_name, password) that are turned into find(:first, :conditions => ["user_name = ?", user_name]) and find(:first, :conditions => ["user_name = ? AND password = ?", user_name, password]) respectively. Also works for find(:all) by using find_all_by_amount(50) that is turned into find(:all, :conditions => ["amount = ?", 50]).

It’s even possible to use all the additional parameters to find. For example, the full interface for find_all_by_amount is actually find_all_by_amount(amount, options).

This also enables you to initialize a record if it is not found, such as find_or_initialize_by_amount(amount) or find_or_create_by_user_and_password(user, password).

Each dynamic finder or initializer/creator is also defined in the class after it is first invoked, so that future attempts to use it do not run through method_missing.

Show source
Register or log in to add new notes.