我正在开发一个Rails 4项目,并且有一个名为 name 的字段的模型。不幸的是,似乎这可能是一个保留字。当我覆盖模型的to_s方法时,它给我一个“堆栈级别太深”的错误。这是to_s方法:
def to_s
"Category - id: #{id}, name: #{name}, slug: #{slug}"
end
通过反复试验,我发现字段“名称”是问题所在。我可以不称一个字段“名字”吗?我找不到任何关于它的文档,因为搜索“保留字段名称”会显示一堆随机结果。
答案 0 :(得分:0)
根据this blacklist,它不是保留的。但是,如底部所列,它是许多现代数据库中的保留sql名称,因此您可能需要小心。
我使用了属性“name”并且没有遇到任何问题。如果您想100%确定,特别是在切换数据库时,请尝试以下方法:
您可以为db列指定不同的标题,例如“user_name”,并为模型中的该列创建别名:
alias_attribute :name, :username
# pattern is :new_title, :actual_db_column_title
答案 1 :(得分:0)
不保留。您必须使用关键字self
来引用调用该方法的对象。所以你的def to_s
应该是:
def to_s
"Category - id: #{self.id}, name: #{self.name}, slug: #{self.slug}"
end