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.