我听说 find_by 已被弃用,这是真的吗?我一直在考虑替代方案,例如为每个人创建find
另一种方法,例如:
before:
Model.find_by_username 'username'
后:
--模型中---
class << self
def by_username username
where(:username => username).first
end
end
这是一个好的命名吗?你给这些方法起了什么名字?
Update:
find_by 并未被弃用,但公告本来可以更清晰! https://edgeguides.rubyonrails.org/4_0_release_notes.html#active-record-deprecations
根据Rails 4 发行说明 http://guides.rubyonrails.org/4_0_release_notes.html#active-record-deprecations:
All dynamic除了 find_by_... 和 find_by_... 之外的方法!已弃用。
find_by
不是动态方法,因此它没有被弃用, and find_by_...
& find_by_...!
是动态的,但仍然没有像上面提到的那样被弃用。
因此,这意味着您仍然可以使用 Active Record 提供的原始方法,而无需定义自己的方法:
Model.find_by_username(:username)
Model.find_by(username: 'value', age: 24)
如果您想要真正已弃用的查找器方法的功能,您可以包含它们被移入的 gem:activerecord-deprecated_finders https://github.com/rails/activerecord-deprecated_finders。或者遵循 Rails 4 发行说明的说明:
以下是重写代码的方法:
- find_all_by_... 可以使用 where(...) 重写。
- find_last_by_... 可以使用 where(...).last 重写。
- scoped_by_... 可以使用 where(...) 重写。
- find_or_initialize_by_... 可以使用 find_or_initialize_by(...) 重写。
- find_or_create_by_... 可以使用 find_or_create_by(...) 重写。
- 查找或创建者...!可以使用 find_or_create_by!(...) 重写。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)