Simple question


#1

Looking for the proper/best way to get an attributes value with a
generated
string:

I have fields named with a _1, _2, . etc format and I want to loop
through
them.

10.times do | x |

@model.field_x

end

What is the best way to grab a generated attribute?

I have a feeling its @model.instance_variable_get(“field_#{i}”)

But I think respond_to? And send? Could be used as well.

Thanks for some insight!

Bob S.

http://www.railtie.net/


#2

I think that your database scheme is wrong if you want to do this. You
probably want a has_many for your model. If you have a “Chapter” model
now, and paragraph_1, paragraph_2, etc, then you need a new model
“Paragraph”. And a has_many :paragraphs in your Chapter model.

But if you must use these fields, I would at least abstract it away:

class YourModel
def fields
last_field = 4 # now you have field_1, field_2, field_3, field_4.
(1…last_field).map{|n| send(“field_#{n}”)}
end
end

then you can do:

o = YourModel.find(1)
o.fields.each do |f|
#…
end

But you clearly want a new model…

On Tuesday, February 07, 2006, at 10:17 AM, Bob S. wrote:

10.times do | x |


Rails mailing list
removed_email_address@domain.invalid
http://lists.rubyonrails.org/mailman/listinfo/rails

Jules


#3

o, and there is read_attribute() too, if I am not mistaken…

On Tuesday, February 07, 2006, at 6:59 PM, Jules J. wrote:

(1…last_field).map{|n| send(“field_#{n}”)}
But you clearly want a new model…

end

http://www.railtie.net/
Jules


Posted with http://DevLists.com. Sign up and save your time!


Rails mailing list
removed_email_address@domain.invalid
http://lists.rubyonrails.org/mailman/listinfo/rails

Jules