A simple way to generate a comma separated list of codes?

I have a model, Account, with many Courses. I want to display the course
codes for those courses as comma delimited text in an attribute of the
account. So I would have

Account << ActiveRecord::Base
has_many :courses

def get_course_codes_as_text
courses.each {|course| something something but I don’t know what
end

Now I could do it the hard way by setting up a string var and pumping
stuff into it inside the block. But there’s an easier Rubyesque way to
do this which I’ve seen in code elsewhere but I can’t find the code now
so I thought I’d ask here. Something to do with join or map or something

John S.

See if I qualify:

courses.collect {|c| c.code}.join(",")

John S. wrote:

I have a model, Account, with many Courses. I want to display the course
codes for those courses as comma delimited text in an attribute of the
account. So I would have

Account << ActiveRecord::Base
has_many :courses

def get_course_codes_as_text
courses.each {|course| something something but I don’t know what
end

Now I could do it the hard way by setting up a string var and pumping
stuff into it inside the block. But there’s an easier Rubyesque way to
do this which I’ve seen in code elsewhere but I can’t find the code now
so I thought I’d ask here. Something to do with join or map or something

John S.

On Tue, Sep 9, 2008 at 10:11 PM, John S. <
[email protected]> wrote:

end

a = []
courses.each { |course|
a.push(course.code)
}
a = a.join “,”

This ought to do it.

~~
Shiv

On Tue, Sep 9, 2008 at 9:46 AM, Shiv N Gautam [email protected]
wrote:

Account << ActiveRecord::Base

a = a.join “,”

This ought to do it.

~~
Shiv

or… (a bit more concise)

courses.collect(&:code).join(‘,’)


Vince Hodges
http://www.imbas.ca/

William Y. wrote:

See if I qualify:

courses.collect {|c| c.code}.join(",")

Yes, that’s the code snippet I was looking for!

Thanks

John S.

Newbie question: how do I prevent your code snippet from becoming an n-
fetch?

Eager loading will work, but if all I want are the codes, then eager
loading of the associated courses will over-retrieve data.

Yes, yes, I know - don’t over optimize. But if I know how to optimize,
at least I can put a comment in the code to remind me when I get
twitter-size traffic. :slight_smile:

– Bosco

On Sep 9, 9:55 am, William Y. [email protected]