2011-01-31 16 views
6

Tôi đang sử dụng CatalystDBIx::Class::Schema::Loader để tạo ra mô hình của tôi trong Catalyst như vậy:Làm cách nào để ngăn DBIx :: Class :: Schema :: Loader tự động thêm InflateColumn :: DateTime trong Catalyst?

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

Thật không may là bộ nạp tự động thiết lập InflateColumn::DateTime như một thành phần mặc định, mà tôi không muốn. Tôi muốn giá trị thô từ cơ sở dữ liệu.

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

Bất kỳ ai cũng có thể cho tôi biết cách ngăn chặn điều này?

Trả lời

6

Người đàn ông, điều đó thật khó chịu. Có vẻ như bạn không thể có được những gì bạn muốn.

_build_loader_components trong Catalyst::Helper::Model::DBIC::Schema thêm nó trừ khi bạn không có không gian tên và không có không gian tên resultset. Nó đẩy thêm component= danh sách của bạn lên đó.

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

Vì vậy, Options-

  1. File a bug.
  2. Làm điều đó với dbicdump.

này nên là những gì bạn wanted-

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

Và sau đó chỉ cần mô hình đơn giản để quấn nó-

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

Cập nhật: Đã diễn ra preserve_case như ví dụ của bạn không sử dụng nó và tôi muốn đề cập đến vì lợi ích của các phương pháp hay nhất là mật khẩu không nên có trong mô hình hoặc các lớp lược đồ. Nó sẽ được cấu hình và nếu bạn đang sử dụng một cái gì đó cho phép nó, như mysql, nó sẽ được cấu hình để được đọc từ một tập tin cấu hình DB đặc quyền hạn chế đặc quyền.

+1

Xin chào Ashley, đó là những gì tôi đã sợ, thấy rằng mã số của người trợ giúp cũng nhưng không chắc chắn nếu có một cách xung quanh nó. Tôi sẽ đi theo cách dbicdump. Chỉ cần viết một helper perl nhỏ mà tự kết xuất giản đồ. Không tệ lắm. Cảm ơn đã xem xét này. –

Các vấn đề liên quan