为导轨型号命名是一个坏主意" Post"

时间:2015-09-29 17:32:21

标签: ruby-on-rails

我想创建一个模型来管理博客帖子并将其命名为#34; post。"这可能会与Rails内置的方法产生冲突吗?

2 个答案:

答案 0 :(得分:1)

  

将轨道模型命名为“Post”

是一个坏主意

是。你的直觉是正确的。虽然不是保留字,但POST是数据库操作。为什么不选择一个没有机会与框架混淆的名称:文章,评论......?

答案 1 :(得分:1)

Rails Guide to Active Record Associations涵盖了这个问题:

  

3.2避免名称冲突

     

您不能自由使用任何名称作为您的关联。因为   创建关联会将具有该名称的方法添加到模型中   给关联一个已经用过的名称是一个坏主意   ActiveRecord :: Base的实例方法。关联方法会   覆盖基本方法并破坏事物。例如,属性或   连接是关联的坏名称。

确定模型名称在关联中使用时是否会导致碰撞很简单:

a = MyModel.new
a.respond_to?(:update) # => true
a.respond_to?(:post) # => false (assuming you haven't defined the association yet)

编辑:

我应该指出,关联不是唯一的名称冲突的潜在来源;在你的情况下,虽然很明显update与ActiveRecord :: Base中的:update方法发生冲突。

Rails模型是顶级命名空间中的常量,因此请注意因包含库代码而产生的冲突。