ruby – 为什么我的ActiveRecord范围与`merge`返回一个数组?
发布时间:2020-12-17 02:04:42 所属栏目:百科 来源:网络整理
导读:我的Contract模型上有一个范围,它使用merge并返回一个数组,而不是我想要的ActiveRecord :: Relation. 是的,我看过它说的是“It is an ActiveRecord::Relation,but Rails is intentionally lying to you”.但在这种情况下: 范围使用合并 它只有在它是链中的
我的Contract模型上有一个范围,它使用merge并返回一个数组,而不是我想要的ActiveRecord :: Relation.
是的,我看过它说的是“It is an ActiveRecord::Relation,but Rails is intentionally lying to you”.但在这种情况下: >范围使用合并 范围在合同上,看起来像 scope :hourly,scoped.merge(Division.find_by_name!('Hourly').contracts) 为什么这会返回一个数组?我可以让它返回ActiveRecord :: Relation吗? 解决方法
以上参考评论.我给了这个虚假的关系,我希望你有分部和合同.
# app/models/contract.rb scope :hourly,select: 'distinct contracts.*',joins: :divisions,conditions: { "divisions.name" => 'Hourly' },order: :id contracts = Contracts.hourly # => [#<Contract id: 1>,#<Contract id: 2>] contracts.class # => #<ActiveRecord::Relation> contracts.scoped.class # => #<ActiveRecord::Relation> contracts.arel # => #<Arel::SelectManager:0x007fab629f7e90> contracts.to_a # => [#<Contract id: 1>,#<Contract id: 2>] contracts.to_sql # => SELECT distinct contracts.* FROM `contracts` INNER JOIN `divisions` ON `divisions`.`contract_id` = `contracts`.`id` WHERE `divisions`.`name` = 'Hourly' ORDER BY id 如果这是您正在寻找的,请告诉我… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |