gpt4 book ai didi

ruby-on-rails - rails : #inspect not displaying attribute

转载 作者:数据小太阳 更新时间:2023-10-29 07:54:13 25 4
gpt4 key购买 nike

我将 @foo 定义为类实例属性,并使用 after_initialize 回调在创建/加载记录时设置此值:

class Blog < ActiveRecord::Base
@foo = nil

after_initialize :assign_value

def assign_value
@foo = 'bar'
end
end

但是,当我检查 一个 Blog 对象时,我没有看到 @foo 属性:

 > Blog.first.inspect
=> "#<Blog id: 1, title: 'Test', created_at: nil, updated_at: nil>"

我需要做什么才能让 inspect 包含它?或者反过来,inspect 如何确定要输出什么?

谢谢。

最佳答案

Active Record 根据数据库表中的列确定在检查中显示哪些属性:

def inspect
attributes_as_nice_string = self.class.column_names.collect { |name|
if has_attribute?(name)
"#{name}: #{attribute_for_inspect(name)}"
end
}.compact.join(", ")
"#<#{self.class} #{attributes_as_nice_string}>"
end

base.rb on github 解除

要更改检查的输出,您必须用自己的方法覆盖它,例如

def inspect
"#{super}, @foo = #{@foo}"
end

应该输出:

> Blog.first.inspect
=> "#<Blog id: 1, title: 'Test', created_at: nil, updated_at: nil>, @foo = 'bar'"

关于ruby-on-rails - rails : #inspect not displaying attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6062015/

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