2011-01-31 3 views
6

그래서 같은 촉매 내 모델을 만들 CatalystDBIx::Class::Schema::Loader을 사용하고 있습니다 :DBIx :: Class :: Schema :: Loader가 Catalyst에서 InflateColumn :: DateTime을 자동으로 추가하는 것을 방지하려면 어떻게합니까?

script/myapp_create.pl model DB DBIC::Schema MyApp::Schema create=static overwrite_modifications=1 components=EncodedColumn dbi:mysql:mydb mydb pass 

불행하게도 로더가 자동으로 InflateColumn::DateTime 내가 원하지 않는 기본 구성 요소로 설정합니다. 데이터베이스의 원시 값을 원합니다.

__PACKAGE__->load_components("InflateColumn::DateTime", "EncodedColumn"); 

누구나이를 방지하는 방법을 알려 줄 수 있습니까?

답변

6

남자, 성가시다. 원하는대로 할 수없는 것처럼 보입니다.

_build_loader_componentsCatalyst::Helper::Model::DBIC::Schema에는 네임 스페이스가없고 결과 집합 네임 스페이스가없는 경우 추가됩니다. 그것은 여분의 component= 목록에 그걸 푸시합니다.

my @components = $self->old_schema && (not $use_namespaces) ?() 
    : ('InflateColumn::DateTime');         

그래서,

  1. File a bug

    을 옵션 -.
  2. dbicdump으로 처리하십시오.

이것은 당신이 - 그것을에게

script/myapp_create.pl model DB DBIC::Schema MyApp::Schema 

업데이트를 포장

dbicdump -o dump_directory=./lib \ 
    -o components='["EncodedColumn"]' \ 
    -o use_namespaces=1 \ 
    -o overwrite_modifications=1 \ 
    MyApp::Schema dbi:mysql:foo user pass 

그리고 그냥 일반 모델을 wanted- 무엇을해야합니다 : 귀하의 예를 사용하지 않은으로 preserve_case을 툭 암호가 모델이나 스키마 클래스에 없어야한다는 모범 사례를 위해 언급하고 싶습니다. 설정에 있어야하며, mysql과 같이 사용할 수있는 무언가를 사용하고 있다면 권한이 제한된 DB 특정 설정 파일에서 읽도록 설정되어야한다.

+1

안녕하세요 애쉴리, 그게 제가 두려웠 던 것입니다. 코드 도우미도 도움이되었지만 주위에 방법이 있는지 확실하지 않았습니다. 나는 dbicdump 방식으로 갈거야. 스키마를 수동으로 덤프하는 작은 perl 도우미를 작성했습니다. 나쁘지 않아. 이 문제를 조사해 주셔서 감사합니다. –

관련 문제