gpt4 book ai didi

ruby-on-rails - 传递对象或 id

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

这只是一个关于最佳实践的问题。

假设您有一个采用一个参数的方法。这个参数是一个对象的id。理想情况下,我希望能够直接传递对象的 ID,或者只传递对象本身。

最优雅的方法是什么?

我想到了以下内容:

def method_name object
object_id = object.to_param.to_i
### do whatever needs to be done with that object_id
end

因此,如果参数已经是一个 id,它几乎保持不变;如果它是一个对象,它会得到它的 ID。

这行得通,但我觉得这可能会更好。此外,to_param 返回一个字符串,在某些情况下它可能返回一个“真实”字符串(即“string”而不是“2”),因此在调用 to_i 时返回 0。例如,在使用 friendly id gem 时可能会发生这种情况。上课。

事件记录提供相同的功能。没关系,如果你说:

Table.where(user_id: User.first.id) # pass in id

Table.where(user_id: User.first) # pass in object and infer id

他们是怎么做到的?实现这种效果的最佳方法是什么?

最佳答案

如果进程是跨 Controller 操作或在 session 中,最好使用 id。比如你要在session中保存一个购物车,比较好的选择是id。很难观察一个对象有多大,使用 id 将有助于提高性能并避免不必要的错误。

但是,如果方法在同一个请求中并且所有操作都在内存中,那么使用对象本身会更快。例如,您将用户传递给权限类以检查他是否可以做某事。因为所有对象都只是内存中的引用,所以提取 id 的额外步骤是不必要的且效率低下。

关于ruby-on-rails - 传递对象或 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19787907/

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