I am trying to form a string from values that get passed to the define_method then take the string and use it either set data in a db or do a .nil? on it just like any other attribute from the db.
On Sun, Apr 4, 2010 at 2:15 PM, Conrad Taylor <[email protected]> wrote: > On Sun, Apr 4, 2010 at 11:46 AM, Chris Habgood <[email protected]> wrote: > >> Is there not a way to form a string convert it to an attribute and then do >> Model.(string converted to attribute)? >> >> > Chris, you can do the following: > > > class Dynamic > > name = foo > ivar = "@#{name}" # form the string > > define_method( "#{name}=" ) do |value| > instance_variable_set( ivar, value ) # create an attribute > end > > end > > > Also, you can do the above without using closures by doing > the following: > > class Dynamic > > name = "foo" > > class_eval %{ > def #{name} > @#{name} > end > def #{name}=(val) > @#{name} = val > end > } > > end > > However, it really depends what you're trying to do because it's not clear > from the question. > > Good luck, > > -Conrad > > >> >> On Sun, Apr 4, 2010 at 12:59 PM, Chris Habgood <[email protected]>wrote: >> >>> Ok, I was also looking at testing for nil? and stuff as well not only >>> setting the attr. >>> >>> >>> On Sun, Apr 4, 2010 at 12:57 PM, Frederick Cheung < >>> [email protected]> wrote: >>> >>>> >>>> >>>> On Apr 4, 6:50 pm, Chris Habgood <[email protected]> wrote: >>>> > Not looking at the value part looking at the attribute part. Is ex >>>> going to >>>> > be dynamic to set the attribute name correctly? >>>> > >>>> Take a look at the send method (or in the special case of active >>>> record you could use update_attributes (or write_attribute and []= if >>>> you want to operate a level lower)) >>>> >>>> Fred >>>> >>>> > >>>> > >>>> >>>> > On Sun, Apr 4, 2010 at 12:23 PM, Conrad Taylor <[email protected]> >>>> wrote: >>>> > > On Sun, Apr 4, 2010 at 9:29 AM, Me <[email protected]> wrote: >>>> > >>>> > >> How would I take the dynamic nature of define_method and also use >>>> that >>>> > >> to set attributes: >>>> > >>>> > >> define_method ("#{ex}_method") do >>>> > >> self.my_db_attribute_ex = value >>>> > >> end >>>> > >>>> > >> Is there a way to set the attribute part dynamically? >>>> > >>>> > > Me, you would do something like the following: >>>> > >>>> > > define_method( "#{ex}_method" ) do |value| >>>> > > self.my_db_attribute_ex = value >>>> > > end >>>> > >>>> > > Good luck, >>>> > >>>> > > -Conrad >>>> > >>>> > >> -- >>>> > >> You received this message because you are subscribed to the Google >>>> Groups >>>> > >> "Ruby on Rails: Talk" group. >>>> > >> To post to this group, send email to >>>> [email protected]. >>>> > >> To unsubscribe from this group, send email to >>>> > >> [email protected]<rubyonrails-talk%[email protected]><rubyonrails-talk%2Bunsubscrib >>>> [email protected]> >>>> > >> . >>>> > >> For more options, visit this group at >>>> > >>http://groups.google.com/group/rubyonrails-talk?hl=en. >>>> > >>>> > > -- >>>> > > You received this message because you are subscribed to the Google >>>> Groups >>>> > > "Ruby on Rails: Talk" group. >>>> > > To post to this group, send email to >>>> [email protected]. >>>> > > To unsubscribe from this group, send email to >>>> > > [email protected]<rubyonrails-talk%[email protected]><rubyonrails-talk%2Bunsubscrib >>>> [email protected]> >>>> > > . >>>> > > For more options, visit this group at >>>> > >http://groups.google.com/group/rubyonrails-talk?hl=en. >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Ruby on Rails: Talk" group. >>>> To post to this group, send email to [email protected]. >>>> To unsubscribe from this group, send email to >>>> [email protected]<rubyonrails-talk%[email protected]> >>>> . >>>> For more options, visit this group at >>>> http://groups.google.com/group/rubyonrails-talk?hl=en. >>>> >>>> >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "Ruby on Rails: Talk" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<rubyonrails-talk%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/rubyonrails-talk?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<rubyonrails-talk%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

