【发布时间】:2014-02-27 06:10:12
【问题描述】:
我有一些 Rails 服务(取决于服务)接受特定类型的对象、该对象的数组或该对象的 ActiveRecord::Relation。
所以:
FooService 接受 Foo 对象,BarService 接受 Bar 对象等。
但是..所有服务对象都希望将传入的内容按摩到给定对象的数组中。
在被调用的服务方法的范围内,我可以很容易地做到这一点。 我试图干掉事情并为所有服务制定一个方法,因为它们每个都有相同的代码块。不幸的是,我遇到了 Ruby 的问题。
例如:
def change_obj(element)
element = [element]
end
blah = "hello"
change_obj(blah)
puts blah.class.to_s #I want it to be an array with the string in it now.
我明白为什么它不起作用。但是,我不清楚正确的做法是什么。
理想情况下,我想要这样的东西:
class BarService < Service
def initialize(foo)
@foo = foo
end
def do_something(bars)
massage_to_array(bars) #method inherited from Service. if bars is an ActiveRecordRelation, convert it to array..if bars is a singular object, flip it to an array with that object as the sole element.
process_array_of_bars(bars)
end
end
【问题讨论】:
标签: ruby-on-rails ruby