12

GPA主キーを持たないActiveRecord モデルがあります。

class GPA < ActiveRecord::Base

end

GPA.first.to_json電話をかけようとすると、 が表示されますTypeError: false is not a symbol。これは、ActiveRecord が主キーを検索しようとしていることが原因であると推測しています。主キーなしでモデルを実装する正しい方法は何ですか?

ここに画像の説明を入力

4

5 に答える 5

18

通常、一緒に主キーを形成するいくつかの列または列の組み合わせがあります。テーブルに主キーがないというのは、idフィールドがないということですか?

一意/自然キーである別の列はありますか? もしそうなら、あなたはすることができます:

class GPA < ActiveRecord::Base
  set_primary_key :strm    # eg column strm is a unique/natural key
end

次のように、複合キー gemで複合キーを使用することもできます。

class GPA < ActiveRecord::Base
  set_primary_keys :student_id, :strm
end
于 2013-09-25T05:42:26.837 に答える
2

データをモデル化するときは、Rails の既定の規則を使用することを強くお勧めします。レガシー テーブルを扱っている場合にのみ、デフォルトを上書きしてください。

オプション1

次のようにして、モデルの主キーをオーバーライドする必要があります。

class Foo < ActiveRecord::Base
    self.primary_key = "strm"
end

.to_jsonjsonを呼び出すと、 のid代わりにキーが含まれますstrm

オプション 2

別の方法は、 jbuilderなどの json コンストラクターを使用することです。そのため、デフォルトの Rails json コンストラクターを使用して、存在しない「id」を json に変換しようとしません。

于 2013-09-29T21:35:09.947 に答える