Aar*_*ron 3 ruby-on-rails arel
我正在尝试查找是否存在更多的Rails-y方法来生成以下查询
# The purpose of this query is to select Users who have not updated
# their user record.
SELECT `users`.* FROM `users` WHERE `users`.`created_at` = `users`.`updated_at`
Run Code Online (Sandbox Code Playgroud)
我可以使用Arel完成以下任务:
arel_where = User.arel_table[:created_at].eq(User.arel_table[:updated_at])
User.where(arel_where)
#=> … WHERE `users`.`created_at` = `users`.`updated_at`
Run Code Online (Sandbox Code Playgroud)
但是,如果不访问表并使用其相等方法,则无法使用哈希语法的任何组合来执行此操作。以下两个由于将密钥转换为字符串而失败。
User.where(created_at: :updated_at)
#=> … WHERE `users`.`created_at` = 'updated_at'
User.where(created_at: User.arel_table[:updated_at])
#=> … WHERE `users`.`created_at` = '--- !ruby/struct:Arel::Attributes::Attribu…
Run Code Online (Sandbox Code Playgroud)
虽然不是硬性要求,但我尝试避免使用类似以下的字符串:
User.where('created_at = updated_at')
#=> WHERE (created_at = updated_at)
Run Code Online (Sandbox Code Playgroud)
有时我会分析我的日志,这与使用Arel的第一个查询之间的查询差异需要解决。
| 归档时间: |
|
| 查看次数: |
1658 次 |
| 最近记录: |