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.

Reply via email to