gpt4 book ai didi

ruby-on-rails-3 - 范围内的实例方法

转载 作者:行者123 更新时间:2023-12-04 07:16:42 24 4
gpt4 key购买 nike

不知道有没有可能?我需要在范围内/范围内使用实例方法。像这样的东西:

scope :public, lambda{ where ({:public => true}) }

并在每条记录上调用实例方法(完成?)以查看它是否完成。此处的公共(public)范围应返回所有公开且已完成的记录,并且记录的完成由实例方法“完成?”确定

有什么可能吗?

谢谢

最佳答案

范围是关于使用 ARel 生成查询逻辑。如果不能代表完整的逻辑? SQL中的方法然后你有点卡住了

范围 - 至少在 rails 3 中 - 用于将查询逻辑链接在一起而不返回结果集。如果您需要一个结果集来完成测试,您需要执行类似的操作

class MyModel < ActiveRecord::Base
scope :public, lambda{ where ({:public => true}) }

def self.completed_public_records
MyModel.public.all.select { |r| r.completed? }
end
end

# elsewhere
MyModel.completed_public_records

或者,如果您需要更大的灵 active
class MyModel < ActiveRecord::Base
scope :public, lambda{ where ({:public => true}) }
# some other scopes etc


def self.completed_filter(finder_obj)
unless finder_obj.is_a?(ActiveRecord::Relation)
raise ArgumentError, "An ActiveRecord::Relation object is required"
end
finder_obj.all.select { |r| r.completed? }
end
end

# elsewhere
MyModel.completed_filter(MyModel.public.another_scope.some_other_scope)

关于ruby-on-rails-3 - 范围内的实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6198660/

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