在我的特定代码中是否存在符号冲突的问题?

时间:2013-11-28 19:45:28

标签: ruby symbols ruby-2.0 name-clash

以下代码有效,但我担心这是偶然的。

:admin中的factory :admin并非用于在我的第二个陈述:admin中引用User::ROLES.index(:admin)

测试/工厂/ factories.rb

factory :admin, parent: :user do
  role_type User::ROLES.index(:admin)
end

同样,它有效,但我仍然想知道我是否应该为了安全而进行这种调整:

factory :admin_user, parent: :user do
...

1 个答案:

答案 0 :(得分:1)

您的第一个代码是正确的。 :admin是一个Ruby符号,它本身并不指向任何东西。正如评论者所说,这就像在多个地方使用数字3一样。

也就是说,稍后阅读该代码的人可能会因为在具有不同含义的两行代码中看到:admin两次而感到困惑。因此,为了提高可读性,我会做出改变。