gpt4 book ai didi

ruby-on-rails - 列出对象响应的所有方法?

转载 作者:数据小太阳 更新时间:2023-10-29 06:36:49 26 4
gpt4 key购买 nike

我有两个模型,

User 
Membership

两者之间存在如下关系

user has_many :memberships

我一直在尝试找出构建方法所在的位置,以及如何将它放入实例的方法列表中。这是显示我的 delima 的调试器的输出

(rdb:63) @user.memberships.respond_to?"build"
true

虽然以下返回 false,但它不应该返回 true 吗??

(rdb:63) @user.memberships.instance_methods.include?"build"
false

最佳答案

有一点是 instance_methods 有一个可选的 bool 参数,指示您是否要查看实例祖先的方法。在您的情况下,我认为您需要 instance_methods(true)

但是,根据 the documentation,“构建”似乎是一种自动生成的方法.通常,ActiveRecord 中自动生成的方法是通过覆盖 method_missing 和处理对实际上不存在的“方法”的调用来实现的。 responds_to 也被覆盖,这样该类将指示它响应正确的调用。但是,由于这些“方法”实际上并未定义,因此它们不会出现在 instance_methods 列表中。

由于类可以使用 method_missing respond_to 的命令列表基本上是无限的,所以我很确定没有办法获取列表。例如,具有属性 a、b、c 和 d 的 ActiveRecord 模型将自动响应调用,如 find_by_a_and_bfind_by_a_b_and_cfind_by_b_and_d等等,无穷无尽。无法获得所有这些可能性的列表。

关于ruby-on-rails - 列出对象响应的所有方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5651997/

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