method_missing

- 1.0.0 (0)
- 1.1.6 (0)
- 1.2.6 (11)
- 2.0.3 (11)
- 2.1.0 (0)
- 2.2.1 (0)
- 2.3.8 (14)
- 3.0.0 (-37)
- 3.0.9 (-1)
- 3.1.0 (0)
- 3.2.1
- 3.2.8
- 3.2.13
- 4.0.2
- 4.1.8
- 4.2.1
- 4.2.7
- 4.2.9
- 5.0.0.1
- 5.1.7
- 5.2.3
- 6.0.0
- 6.1.3.1
- 6.1.7.7
- 7.0.0
- 7.1.3.2
- 7.1.3.4
- What's this?
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.