ActiveRecord:定义关联时,将类而不是字符串传递给class_name

时间:2013-12-05 03:43:46

标签: ruby-on-rails activerecord associations

在定义关联时,是否存在传递类而不是字符串的含义或陷阱?

belongs_to :owner, class_name: User

相反:

belongs_to :owner, class_name: "User"

2 个答案:

答案 0 :(得分:12)

该类可能尚未加载,在这种情况下,您将获得NameError: uninitialized constant User

由于这个原因,您应该使用"User",如选项名称:class_name所暗示的那样,而不是:class

答案 1 :(得分:0)

在极少数情况下,当使用类(User)而不是类名作为字符串(' User')时,我会遇到一些随机错误。我无法重现它们并通过重新启动应用服务器来解决这个问题。

  

它也可以是一个符号。它不能是类常量,因为如果你有两个相关的模型,当第一个被加载时,第二个尚未定义,所以不会定义常量,这会产生错误。

来源:https://github.com/rails/rails/issues/6486