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