gpt4 book ai didi

ruby-on-rails - Rails 确定关联是 has_one 还是 has_many

转载 作者:行者123 更新时间:2023-12-04 06:14:47 25 4
gpt4 key购买 nike

想知道是否有一种简单的方法可以动态确定模型的关联是“has_one ”还是“has_many ”关系(即这是一个对象的关联还是多个对象的关联)。

我正在使用 MongoMapper,所以我可以检查类 klass有一个关联的模型 assoc通过一个或多个关系

klass.associations[:assoc].is_a? MongoMapper::Plugins::Associations::OneAssociation
klass.associations[:assoc].is_a? MongoMapper::Plugins::Associations::ManyAssociation

但这看起来很笨拙,而且不是通用的(即也不适用于 ActiveRecord 关联)。我还想避免加载任何对象,所以我很确定 instance.assoc.is_a? Array也出来了。

有任何想法吗?

最佳答案

更新:所以,我偶然发现了反射类方法 http://api.rubyonrails.org/classes/ActiveRecord/Reflection/ClassMethods.html

您可以获得所有has_many , belongs_to等与 reflect_on_all_associations方法。都在里面或者您可以将关联放入 reflect_on_association它会告诉你它是否是 has_many , has_one等。 具体来说:

Model.reflect_on_association(:assoc).macro

对于所有情况,这应该足够了。它实际上并没有解决我目前正在处理的问题,但它应该可以解决这个问题。

关于ruby-on-rails - Rails 确定关联是 has_one 还是 has_many,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17499916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com