“名字”是Rails中的保留字吗?

时间:2013-03-18 22:24:24

标签: ruby-on-rails ruby ruby-on-rails-3

我正在开发一个Rails 4项目,并且有一个名为 name 的字段的模型。不幸的是,似乎这可能是一个保留字。当我覆盖模型的to_s方法时,它给我一个“堆栈级别太深”的错误。这是to_s方法:

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

通过反复试验,我发现字段“名称”是问题所在。我可以不称一个字段“名字”吗?我找不到任何关于它的文档,因为搜索“保留字段名称”会显示一堆随机结果。

2 个答案:

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