gpt4 book ai didi

ruby-on-rails - 不推荐使用 rails 4 find_by 吗?

转载 作者:行者123 更新时间:2023-12-04 04:51:37 27 4
gpt4 key购买 nike

我听说 find_by 已被弃用,这是真的吗?我一直在考虑替代方案,例如为每个创建 find一种不同的方法,例如:
前:

Model.find_by_username 'username'
后:
--在模型中--
class << self
def by_username username
where(:username => username).first
end
end
这是一个好的命名吗?你给这些方法起什么名字?
更新:
find_by is not deprecated but the announcement could have been clearer!

最佳答案

根据Rails 4 Release Notes :

All dynamic methods except for find_by_... and find_by_...! are deprecated.


find_by不是动态方法,因此 它没有被弃用 , 和 find_by_... & find_by_...!是动态的,但仍然没有像上面提到的那样被弃用。

所以这意味着您仍然可以使用 Active Record 提供的原始方法,而无需定义自己的方法:
Model.find_by_username(:username)
Model.find_by(username: 'value', age: 24)

如果您想要真正弃用的 finder 方法的功能,您可以包含它们被移入的 gem: activerecord-deprecated_finders .或者遵循 Rails 4 发行说明所说的:

Here's how you can rewrite the code:

  • find_all_by_... can be rewritten using where(...).
  • find_last_by_... can be rewritten using where(...).last.
  • scoped_by_... can be rewritten using where(...).
  • find_or_initialize_by_... can be rewritten using find_or_initialize_by(...).
  • find_or_create_by_... can be rewritten using find_or_create_by(...).
  • find_or_create_by_...! can be rewritten using find_or_create_by!(...).

关于ruby-on-rails - 不推荐使用 rails 4 find_by 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23921780/

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