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 回答