我一直在为这样的自定义has_many
关联建模:
has_many :friends, class: User
我最近发现这种风格没有记录,API文档:
has_many :friends, class_name: 'User'
我没有注意到前一种语法有任何问题,我很好奇为什么使用后面的语法(避免将字符串转换为类不是更好吗?)。有没有理由从前者转为后者?
答案 0 :(得分:3)
即将推出的 rails class
版本已经renamed to anonymous_class
了。虽然它仍然在主分支中。使用:class
时出现问题,此处来自commit:
在1f006c中添加了一个名为:class的选项,允许传递匿名 类到关联定义。由于使用:class而不是 :class_name即使在经验丰富的开发人员中也是一个相当普遍的错字 这可能导致在raise_on_type_mismatch中出现难以调试的错误?
为了解决这个问题,我们将选项从:class重命名为:anonymous_class as 这是对该选项的更正确的描述。从此 是一个内部的,没有证件的选项,不需要弃用。
在关联选项中将
:class
重命名为:anonymous_class
。修复#19659
答案 1 :(得分:0)
如果需要动态定义类或运行一个返回类的方法,那么第一个选项将非常有用。
老实说,虽然我无法想出一个理想的方案,但这是一个理想的方法。