aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Pike <steve@sevenfifty.comexit>2011-10-11 09:32:23 -0400
committerStephen Pike <steve@sevenfifty.comexit>2011-10-11 09:32:23 -0400
commitc4e29541724433fd1c96715bde829209066ca205 (patch)
tree19473e034fa806a12ab17979515b7da8cd7a884f
parent3ca269674f66558f6ced4d956ecae4959dacd596 (diff)
downloadrails-c4e29541724433fd1c96715bde829209066ca205.tar.gz
rails-c4e29541724433fd1c96715bde829209066ca205.tar.bz2
rails-c4e29541724433fd1c96715bde829209066ca205.zip
Runtime conditions for associations should use procs
The association guide previously recommended using a trick with single quote delaying of string interpolation in order to handle setting association conditions that would be evaluated at runtime. Using a proc is the new way as this no longer works.
-rw-r--r--railties/guides/source/association_basics.textile6
1 files changed, 2 insertions, 4 deletions
diff --git a/railties/guides/source/association_basics.textile b/railties/guides/source/association_basics.textile
index 479a3c1e30..6829eb8ef4 100644
--- a/railties/guides/source/association_basics.textile
+++ b/railties/guides/source/association_basics.textile
@@ -1229,17 +1229,15 @@ end
If you use a hash-style +:conditions+ option, then record creation via this association will be automatically scoped using the hash. In this case, using +@customer.confirmed_orders.create+ or +@customer.confirmed_orders.build+ will create orders where the confirmed column has the value +true+.
-If you need to evaluate conditions dynamically at runtime, you could use string interpolation in single quotes:
+If you need to evaluate conditions dynamically at runtime, use a proc:
<ruby>
class Customer < ActiveRecord::Base
has_many :latest_orders, :class_name => "Order",
- :conditions => 'orders.created_at > #{10.hours.ago.to_s(:db).inspect}'
+ :conditions => proc { "orders.created_at > #{10.hours.ago.to_s(:db).inspect}" }
end
</ruby>
-Be sure to use single quotes.
-
h6(#has_many-counter_sql). +:counter_sql+
Normally Rails automatically generates the proper SQL to count the association members. With the +:counter_sql+ option, you can specify a complete SQL statement to count them yourself.