bakeで関連モデルの設定名が途切れる事がある

3文節位の長いテーブル名からbakeでモデルを生成すると、関連の生成時にクラス名が途切れました。

原因など不明ですが、ひとまず現象メモ*1


テーブル名 characters_has_profiles
charactersとprofilesを多:多リレーションシップで結ぶ為のテーブル。


characters, profilesとともに、bakeで関連付けも設定してモデル生成したところ、

characters, profiles側の関連付け設定でクラス名
 CharactersHasProfiles
となるべきところが、

 HasProfile
 CharactersHa

のようになっていました。


「HasProfile」だけなら、3文節モデル名はダメなのかなと最初思いましたが、Cookbookで「3文節の場合」が例示されてますし*2
第一「CharactersHa」の説明が付かない。


名称が長いところに問題があるのでしょうか・・・*3


正しく動くようにした修正差分。

[cake@cake chara-shee]$ git diff  app/models/character.php app/models/profile.php
diff --git a/app/models/character.php b/app/models/character.php
index 409f39e..6260fd5 100644
--- a/app/models/character.php
+++ b/app/models/character.php
@@ -42,8 +42,8 @@ class Character extends AppModel {
        );

        var $hasAndBelongsToMany = array(
-               'HasProfile' => array(
-                       'className' => 'HasProfile',
+               'CharactersHasProfiles' => array(
+                       'className' => 'CharactersHasProfiles',
                        'joinTable' => 'characters_has_profiles',
                        'foreignKey' => 'character_id',
                        'associationForeignKey' => 'has_profile_id',
diff --git a/app/models/profile.php b/app/models/profile.php
index b6f3338..f2f20dc 100644
--- a/app/models/profile.php
+++ b/app/models/profile.php
@@ -51,8 +51,8 @@ class Profile extends AppModel {
        );

        var $hasAndBelongsToMany = array(
-               'CharactersHa' => array(
-                       'className' => 'CharactersHa',
+               'CharactersHasProfiles' => array(
+                       'className' => 'CharactersHasProfiles',
                        'joinTable' => 'characters_has_profiles',
                        'foreignKey' => 'profile_id',
                        'associationForeignKey' => 'characters_ha_id',

*1:CakePHPのバージョンは1.2.5

*2:http://book.cakephp.org/ja/view/24/Model-and-Database-Conventions

*3:DBDesignerで多:多リレーションシップ作成したテーブル名をそのまま使用