GPA
主キーを持たないActiveRecord モデルがあります。
class GPA < ActiveRecord::Base
end
GPA.first.to_json
電話をかけようとすると、 が表示されますTypeError: false is not a symbol
。これは、ActiveRecord が主キーを検索しようとしていることが原因であると推測しています。主キーなしでモデルを実装する正しい方法は何ですか?
GPA
主キーを持たないActiveRecord モデルがあります。
class GPA < ActiveRecord::Base
end
GPA.first.to_json
電話をかけようとすると、 が表示されますTypeError: false is not a symbol
。これは、ActiveRecord が主キーを検索しようとしていることが原因であると推測しています。主キーなしでモデルを実装する正しい方法は何ですか?
通常、一緒に主キーを形成するいくつかの列または列の組み合わせがあります。テーブルに主キーがないというのは、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
データをモデル化するときは、Rails の既定の規則を使用することを強くお勧めします。レガシー テーブルを扱っている場合にのみ、デフォルトを上書きしてください。
次のようにして、モデルの主キーをオーバーライドする必要があります。
class Foo < ActiveRecord::Base
self.primary_key = "strm"
end
.to_json
jsonを呼び出すと、 のid
代わりにキーが含まれますstrm
。
別の方法は、 jbuilderなどの json コンストラクターを使用することです。そのため、デフォルトの Rails json コンストラクターを使用して、存在しない「id」を json に変換しようとしません。