gpt4 book ai didi

ruby-on-rails - 如何在 rails 4 的 ActiveRecord 查询中获取哈希(attr_accessor)中的计算值?

转载 作者:行者123 更新时间:2023-12-04 18:00:10 24 4
gpt4 key购买 nike

我一直在搜索并试图让它工作,但我找不到简单的解决方案。

我有一个名为 Task 的模型类,这个类有一个计算值,我可以通过名为 overall_rating 的 attr_accessor 获得该值

class Task < ActiveRecord::Base
attr_accessor :overall_rating

def overall_rating
#returns calculated value
end
end

如果我像这样创建一个 ActiveRecord 查询实例

t = Task.first

我可以这样得到“overall_rating”值

t.overall_rating #returns calculated value

但是有一种方法可以获得相同的值,但将对象作为哈希访问?

t['id'] # returns ID
t['overall_rating'] #returns nil

非常感谢您的帮助。

最佳答案

我会简单地定义一个方法,将记录作为散列返回。它使用 attributes method来自 ActiveRecord 并手动将计算出的属性添加到散列中:

class Task < ActiveRecord::Base
attr_reader :overall_rating

def overall_rating
# returns calculated value, the following is a simple example of a calculation
id + 100
end

def to_h
attributes.merge("overall_rating" => overall_rating)
end
end

另请注意,我将 attr_accessor 更改为 attr_reader,因为您可能不希望为计算值定义 setter。

例子:

t = Task.find(5)
t.to_h
# => { "id" => 5, "overall_rating" => 105 }

关于ruby-on-rails - 如何在 rails 4 的 ActiveRecord 查询中获取哈希(attr_accessor)中的计算值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36616495/

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