我想创建一个模型来管理博客帖子并将其命名为#34; post。"这可能会与Rails内置的方法产生冲突吗?
答案 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模型是顶级命名空间中的常量,因此请注意因包含库代码而产生的冲突。