On 10/04/2014 10:56 PM, Bill Moseley wrote:


On Sat, Oct 4, 2014 at 12:04 PM, Peter Rabbitson <rabbit+d...@rabbit.us
<mailto:rabbit+d...@rabbit.us>> wrote:


    The problem in its core (and this has always been the case) is that:
       My::App::Schema::Result::Foo->__result_source_instance
         !=
       My::App::Schema->source('Foo')
         !=
       $my_app_schema_instance->__source('Foo')

    The change in 4006691d207 makes things consistently work on the
    "current instance level", whereas before it was not entirely clear
    where the ResultSourceProxy call will actually land.

    Does this answer your question? Is there something I missed when
    implementing this part?


That answers my question -- I don't think it makes sense to call
add_column on a row object, which is what our code was doing.   I don't
know why they (meaning our developer) used this approach instead of just
adding additional attribute's the the result class -- or perhaps
creating a subclass with the extra attributes.

Is that the suggested approach now?  If you have a result class for,
say,  "Employee" and you wanted to add meta data (meaning associated
attributes that are not stored in the database) for only a subset of
Employees that are "retired" is this still the way to go?

That is something like:

    package Employee;

    use base 'DBIx::Class::Core';
    __PACKAGE__->table( 'employee' );

    __PACKAGE__add_columns( ... );
    ...
    1;



    package RetiredEmployee;
    use Moose;
    extends 'Employee';
    __PACKAGE__->table( 'employee' );
    __PACKAGE__->source_name( 'RetiredEmployee' );

    has current_age => ( ... );  # for lack of a better example.

    1;


The general answer is "yes". You can use whatever fits in your general development paradigm. Either a Moo(se) subclass, or a role (trait) or just use regular subclassing and add a Class::Accessor::Grouped-based accessor - anything really works.

And yes - adding a "virtual column" to only use it as a vehicle for extra metadata, unrelated to the underlying storage - that is indeed quite wrong.


_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk

Reply via email to