gpt4 book ai didi

ruby-on-rails - 在 ActiveRecord 关系上定义自定义查找器方法?

转载 作者:数据小太阳 更新时间:2023-10-29 07:16:24 24 4
gpt4 key购买 nike

Foo has_many Bar。我想做类似的事情:

foo_instance.bars.find_with_custom_stuff(baz)

如何定义 find_with_custom_stuff 以便它在 bars 关系上可用? (不仅仅是一个 Bar 类方法?)

更新

我想做一些比作用域更复杂的事情。像这样的东西:

def find_with_custom_stuff(thing)
if relation.find_by_pineapple(thing)
relation.find_by_pineapple(thing).monkey
else
:banana
end
end

最佳答案

作用域,rails 3 中的 scope 和 rails 2 中的 named_scope

class Bar
scope :custom_find, lambda {|baz| where(:whatever => baz) }
end

foo_instance.bars.custom_find(baz)

scope 应该返回一个范围,因此鉴于您的更新,您可能不想在此处使用 scope。不过,您可以编写一个类方法,并使用 scoped 访问当前范围,例如:

class Bar
def self.custom_find(thing)
if bar = scoped.find_by_pineapple(thing)
bar.monkey
else
:banana
end
end
end

关于ruby-on-rails - 在 ActiveRecord 关系上定义自定义查找器方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7053544/

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