On Apr 4, 8:38 pm, Chris Habgood <[email protected]> wrote:
> 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.
>

Like I said, you can use send for this (which allows you to call any
method on a object) and update_attributes allows you set any
attributes you want given their name and a new value

Fred

>
>
> 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%2Bunsubscrib
> >>>> > >>  [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%2Bunsubscrib
> >>>> > >  [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%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%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%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].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to