0

これがその方法です。

class Prijave < ActiveRecord::Base
   belongs_to :timovi
   belongs_to :liga
end

class Timovi < ActiveRecord::Base
    belongs_to :sportovi
    has_many :timoviusers, :dependent => :destroy
    has_many :prijaves, :dependent => :destroy
end

1つのTimoviを削除しようとすると、次のようになります。初期化されていない定数Timovi :: Prijafe

また、コンソールで

1.9.3p194 :001 > a=Timovi.find(6)
  Timovi Load (0.2ms)  SELECT `timovis`.* FROM `timovis` WHERE `timovis`.`id` = 6 LIMIT 1
1.9.3p194 :007 > a.prijaves
NameError: uninitialized constant Timovi::Prijafe

Prijafes?私はどこにもそれを宣言しませんでした...私はどこにもそれを持っていません...バグ?私は何か間違ったことをした?ありがとうございました

4

2 に答える 2

2

Active Recordは、アクティブサポートインフレクターを使用して、複数形からクラス名を決定します。特に単語が英語であるように見えない場合、これは絶対確実ではありません。

インフレクタールールを追加して、使用する複数形/単数形をレールに教えるか(初期化子にこれを行う方法を示すサンプルファイルがあるはずです)、アクティブレコードが実行しないように:class_nameオプションをhas_manyに指定できます。クラス名を推測する必要があります。

于 2013-03-17T22:49:46.510 に答える
1

「Prijafe」の複数形は「Prijaves」です

したがって、a.prijavesを呼び出すと、統一された定数が得られます。

リンクは次のとおりです。RubyonRails:Railsで複数形の名前と単数形の名前を明示的に定義するにはどうすればよいですか?

于 2013-03-17T22:49:57.487 に答える