【发布时间】:2015-07-28 21:47:37
【问题描述】:
如何让模型与来自同一模型的记录子集关联,由 AR 枚举范围定义?
我认为像下面这样的东西会起作用,但事实并非如此。如果可以简化事情,我愿意使用has_many :through,但现在看起来有点矫枉过正。
class User < ActiveRecord::Base
enum role: [:doctor, :patient, :clinician]
has_and_belongs_to_many :doctors, &:doctor?, class_name: "User"
end
更正到建议的版本会出现语法错误;
class User < ActiveRecord::Base
enum role: [:doctor, :patient, :clinician]
has_and_belongs_to_many :doctors, &:doctor, class_name: "User"
end
错误:
SyntaxError: ~/m2/app/models/user.rb:3: syntax error, unexpected ',', expecting keyword_end
has_and_belongs_to_many :doctors, &:doctor, class_name: "User"
^
使用->{doctor} 语法有效,但我想知道为什么& 语法错误。
好的,看看下面为什么& 语法是错误的,显然 :doctor.to_proc 技巧不起作用,因为 to_proc 将当前对象绑定到 proc 而它应该被传递给 proc,这意味着 @在这种情况下,987654328@ 或 Proc.new{} 确实是必要的。
【问题讨论】:
标签: ruby-on-rails activerecord enums associations