gpt4 book ai didi

ruby-on-rails - 从 ActiveRecord 中的模型中获取范围

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

我目前正在构建这样的查询:

account.sales.method_needing_more_account_info(account)

我希望能够根据已经存在的范围确定帐户,将方法调用简化为如下所示:

account.sales.method_pulling_account_from_scope

我这样做是因为帐户模型包含某些设置,这些设置决定了销售数据的呈现方式并更改查询以匹配。

最佳答案

作用域是类方法,因此不知道实例变量和属性,为了执行您要求的操作,您必须坚持您的第一个代码示例。

另一种方法是编写一个返回数据的方法

rails 2

# returns an array of results
def more_account_info
self.sales.all(:conditions => [])
end

# i've also added an initializer to allow for returning a scope before
# details here: http://railscasts.com/episodes/112-anonymous-scopes
class ActiveRecord::Base
scope :conditions, lambda { |*args| {:conditions => args} }
end

# which allows for me to return a scoped object (chainable)
def more_account_info
scope = Account.scoped({})
scope = scope.sales
scope = scope.conditions ""
end

或者在 rails 3 中你可以返回一个 Arel 对象(可链接)

rails 3

# returns an arel object rather than an array of results
def more_account_info
self.sales.where("")
def

关于ruby-on-rails - 从 ActiveRecord 中的模型中获取范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9588236/

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