Hello,
I´m planning to create a room managaement system in Rails.
I have a collection of rooms, like this:
@rooms = Room.find :all
Then I want to write:
@rooms.to_svg # (or any other method name)
to convert this collection of rooms into SVG.
Now the question: Where do I have to define those methods?
I could write
def @rooms.to_svg
but that would be only for this collection; if I do Room.find :blah, I
want to be able to do the same thing.
Thanks,
Jonas
Hello,
I?m planning to create a room managaement system in Rails.
I have a collection of rooms, like this:
@rooms = Room.find :all
Then I want to write:
@rooms.to_svg # (or any other method name)
to convert this collection of rooms into SVG.
Now the question: Where do I have to define those methods?
I could write
def @rooms.to_svg
but that would be only for this collection; if I do Room.find :blah, I
want to be able to do the same thing.
class Room < ActiveRecord::Base
module MyCollectionMethods
def to_svg
#...
end
end
def self.find(*args)
result = super(*args)
if args[0] == :all || Array === args[0]
result.extend(MyCollectionMethods)
end
result
end
end
Note: off the cuff and untested
Thanks,
Jonas
--Greg
Yeah, works great =)
But why the check
if args[0] == :all || Array === args[0]
?
Greets
Jonas
class Room < ActiveRecord::Base
module MyCollectionMethods
def to_svg
#...
end
end
def self.find(*args)
result = super(*args)
if args[0] == :all || Array === args[0]
result.extend(MyCollectionMethods)
end
result
end
end
Yeah, works great =)
But why the check
if args[0] == :all || Array === args[0]
?
So that you don't add the collection methods when find is not
returning an Array (ie if you're doing find(some_id) or find :first)
Fred
We could do:
Unless result.is-array
Result.extend
End
Result
Any thoughts?
Http://www.rubyplus.org
Free Ruby & Rails screencasts