如何获取Rails模型has_many关联集合的模型类名?
Rails中获取has_many关联的模型类名的优雅方法
你之前用字符串拆分的方法确实不够稳妥,Rails其实给ActiveRecord的关联集合提供了原生方法来直接获取对应的模型类:
通过集合实例直接获取:使用
klass方法,这是CollectionProxy内置的方法,直接返回关联的模型类:organization.users.klass # => Users (对应你的模型类)如果需要类名的字符串形式,再调用
name即可:organization.users.klass.name # => "Users"从模型类层面获取(无需实例):如果你没有
organization实例,想直接从Organization模型获取users关联对应的模型类,可以用反射方法:Organization.reflect_on_association(:users).klass # => Users
这种方法比字符串拆分靠谱得多,完全依赖Rails官方提供的API,不会因为Rails版本迭代导致类名结构变化而失效,代码也更简洁直观。
内容的提问来源于stack exchange,提问作者Mirror318
相关产品推荐
相关产品推荐

