mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
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.
This commit is contained in:
parent
3ca269674f
commit
c4e2954172
1 changed files with 2 additions and 4 deletions
|
@ -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.
|
||||
|
|
Loading…
Reference in a new issue