2

Rails 4 プロジェクトに取り組んでおり、 nameというフィールドを持つモデルがあります。残念ながら、それは予約語のようです。モデルの to_s メソッドを上書きすると、「スタック レベルが深すぎます」というエラーが表示されます。to_s メソッドは次のとおりです。

def to_s
    "Category - id: #{id}, name: #{name}, slug: #{slug}"
end

試行錯誤の結果、フィールド「名前」が問題であることがわかりました。フィールドを「名前」と呼ぶことはできませんか? 「フィールド名予約済み」を検索するとランダムな結果が多数表示されるため、それに関するドキュメントは見つかりません。

4

2 に答える 2

0

このブラックリストによると、予約されていません。ただし、一番下にリストされているように、これは多くの最新のデータベースで予約されている sql 名であるため、注意が必要な場合があります。

私は属性「名前」を使用しましたが、問題は発生していません。特にデータベースの切り替えに関して 100% 確実にしたい場合は、次のことを試してください。

db 列に「user_name」などの別のタイトルを付けて、モデル内でその列のエイリアスを作成できます。

alias_attribute :name, :username
# pattern is :new_title, :actual_db_column_title
于 2013-03-18T22:32:47.933 に答える
-1

予約されていません。selfメソッドを呼び出すオブジェクトを参照するには、キーワードを使用する必要があります。したがって、次のdef to_sようになります。

def to_s
  "Category - id: #{self.id}, name: #{self.name}, slug: #{self.slug}"
end
于 2013-03-18T22:33:42.990 に答える