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

Reply via email to