Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.
wrote:
> El Wednesday 25 March 2009 15:33:14 Wes Gamble escribió:
>
>> Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.
>>
>> wrote:
>>
>>> El Sunday 22 March 2009 08:17:18 Wes Gamble escribió:
>>>
>>> I have a fairly complex custom find call that I need to do in some
>>> instances for an AS index view. conditions_for_collection will only
>>> handle conditions, correct? Is there any hook so that I can provide
>>> other find options like :joins or :limit?
>>>
>>>
>>> You can define an active_scaffold_joins method, like
>>> active_scaffold_conditions, and you can set the limit in your controller
>>> AS config:
>>> config.list.per_page
>>> http://wiki.github.com/activescaffold/active_scaffold/api-list
>>>
>> Sergio,
>>
>> I need to do a join to a HABTM association table - currently I'm doing
>> it as a subquery via conditions_for_collection, as in:
>>
>> "id IN (SELECT medical_facility_id FROM
>> medical_facilities_medical_facility_categories WHERE
>> medical_facility_category_id = #...@medical_facility_category_id})" if
>> @medical_facility_category_id
>>
>> How would I write the active_scaffold_joins (or looks like I should use
>> active_scaffold_habtm_joins) to handle this case?
>>
>
> Sorry, I was wrong.
> conditions_for_collection is for set :conditions option of rails find.
> joins_for_collection is for set :joins option of ActiveRecord's find method.
>
> Do you know build the sql with ActiveRecord's find method?
> MedicalFacility.find :all, :joins => :medical_facility_categories,
> :conditions
> => ['medical_facility_categories.id = ?', @medical_facility_category_id]
>
> So you define these methods:
> def conditions_for_collection
> ['medical_facility_categories.id = ?', @medical_facility_category_id]
> end
>
> def joins_for_collection
> [:medical_facility_categories]
> end
>
>
This is weird. The call to "joins_for_finder" (which calls
joins_for_collection) is failing. I've puts'ed it to death to see
what's happening. Even though the class of my "joins_for_collection"
method is reported as Array, Array is NOT matching on the case
statement, and it is dropping into the else. WTF?
def joins_for_finder
puts joins_for_collection.class
case joins_for_collection.class
when String
[ joins_for_collection ]
when Array
puts joins_for_collection.inspect
joins_for_collection
else
puts "HERE: #{joins_for_collection.class}"
[]
end + active_scaffold_habtm_joins
end
Output:
Array
HERE: Array
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"ActiveScaffold : Ruby on Rails plugin" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/activescaffold?hl=en
-~----------~----~----~----~------~----~------~--~---