I haven't poked around in that code enough to tell if this makes
sense, but my thought was that we shouldn't be generating a SQL
fragment for that at all.
Here's an example of what I'd love to be able to do:
class SomeModel < AR::Base
named_scope :order_by_some_field, lambda { |dir| # code to produce
a order scope }
or maybe
named_scope :order_by_some_field_asc
named_scope :order_by_some_field_desc
And then the :order_by scope would simply call the correct scope.
Automatic scopes would catch the regular cases.
This may also solve the "sort on columns not actually present in the
original table" thing as well.
--Matt Jones
On Sep 15, 2009, at 4:34 AM, Tom Locke wrote:
>
> This is a common problem with table-plus.
>
> I've just had a look at the code and I think we can solve this pretty
> easily by having the order_by scope use default_order (if available)
> instead of name_attribute.
>
> Something like (from the order_by default scope)
>
> ...
> elsif type.respond_to?(:table_name)
> include = field
> if (order = type.default_order)
> colspec = "#{type.table_name}.#{default_order}"
> elsif (name = type.name_attribute)
> colspec = "#{type.table_name}.#{name}"
> end
> else
> ...
>
> Bryan, Matt? Looks OK?
>
> I guess we'd have to be a bit more clever than this if we want to
> support things like "last_name, first_name"
>
> Venka - if this works you'll just be able to add "set_default_order
> "last_name" on GrantWriter.
>
> Tom
>
>
> On 15 Sep 2009, at 09:02, Venka Ashtakala wrote:
>
>>
>> I am using the table-plus tag, and one of the columns in my table is
>> called 'grant-writer' which isn't a column but actually a model. I
>> am
>> using the table-plus tag to list Projects and a Project belongs to a
>> Grant-Writer. The GrantWriter model has a function called 'name'
>> but,
>> it doesn't have a 'name' field and so there is no 'name' column in
>> the
>> database. When I include :grant_writer as one of the fields in my
>> table-plus tag and I try to sort on it, the generated SQL is looking
>> for a grant_writer.name column ( which doesn't exist ) and so my page
>> crashes. Is there any way that I can specify that the 'name' column
>> should not be used but another column?
>>
>> Thanks
>>>
>
>
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Hobo
Users" 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/hobousers?hl=en
-~----------~----~----~----~------~----~------~--~---