Wes Gamble wrote:
> 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
>   
Sure enough, joins_for_collection.class === Array returns false, 
although joins_for_collection.class == Array returns true.

This looks like a bug to me, and now I wonder if joins_for_collection 
ever worked.  Same behavior occurs if a String is returned from 
joins_for_collection.

Shall I fix this as well in the patch that I'm going to submit?

Wes

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

  • co... Wes Gamble
    • ... Kenny Ortmann
      • ... Kenny Ortmann
      • ... Wes Gamble
    • ... Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.
      • ... Wes Gamble
        • ... Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.
          • ... Wes Gamble
            • ... Wes Gamble
              • ... Wes Gamble
                • ... Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.
                • ... Mukund
                • ... Wes Gamble
                • ... Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.
                • ... Wes Gamble
        • ... rbarton

Reply via email to