In an RDBMS at least, String typically maps to VARCHAR(n).  n is the
length of the property, which is 50 by default in DataMapper.  That
can be controlled by the :length option, the maximum length is a
database specific limit.  I think it's 64kb for MySQL, for example.

Text columns map to a TEXT column type, (or MEDIUMTEXT, etc), with a
default size of (iirc) 64kb, and potentially (again, database
specific) storing gb.  They're also lazily loaded by default in
DataMapper, which can result in extra queries, but more efficient
fetches for e.g. index pages.

I'd definitely make the :salt, :name and :email properties String, not
Text.  Perhaps with a different :length setting than the default or
perhaps not.  Message is a matter of taste, but probably Text.
Specifying the :length is almost always a good idea, just from a
sanity check perspective, though in the case of the :salt field, won't
actually save any storage.

Regards
Jon

On 15 April 2011 12:58, DAZ <[email protected]> wrote:
> Thanks for pointing this out Jon, I didn't realise there was a string
> property. I've just been looking at the docs, but can't find what the
> upper limit for the string type is (or what the difference between a
> String and Text actually is).
>
> In this case the :salt property will always be a 2-character string.
> It's used to add some randomness to the short-urls I'm building.
>
> I've also got fields of :email and :name that I think should probably
> be of type String too.
>
> There's also a 'message' filed, but that could be long so Text is
> probably better, yes?
>
> On a related matter, does it help adding a length argument such
> as :length => 2 to these properties?
>
> cheers,
>
> DAZ
>
> On Apr 15, 10:35 am, Jonathan Stott <[email protected]> wrote:
>> Just as a more DataMapper question, what's the purpose of this field?
>> A Text column is intended for storing large quantities of text, up to
>> many kb/mb.  If it's just going to store a short string, a String
>> column will be smaller and faster.
>>
>> Regards
>> Jon
>>
>> On 15 April 2011 10:16, DAZ <[email protected]> wrote:
>>
>>
>>
>>
>>
>>
>>
>> > Thanks postmodern - that works perfectly now. How come?
>>
>> > cheers,
>>
>> > DAZ
>>
>> > On Apr 15, 10:17 am, postmodern <[email protected]> wrote:
>> >> Put a proc { |model,property| } around that default.
>>
>> >> On 04/15/2011 02:06 AM, DAZ wrote:
>>
>> >> > Hi,
>>
>> >> > I have the following property that I want to create a 2-digit random
>> >> > string when a resource gets created:
>>
>> >> > property :salt,         Text, :default => rand(9).to_s +
>> >> > (1+rand(8)).to_s
>>
>> >> > In development on my local machine this works fine, but in production
>> >> > (on Heroku) this gives the same value for resources created at around
>> >> > the same time.
>>
>> >> > Anybody know why this might be and a possible workaround?
>>
>> >> > cheers,
>>
>> >> > DAZ
>>
>> >>  signature.asc
>> >> < 1KViewDownload
>>
>> > --
>> > You received this message because you are subscribed to the Google Groups 
>> > "DataMapper" 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 
>> > athttp://groups.google.com/group/datamapper?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "DataMapper" 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/datamapper?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"DataMapper" 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/datamapper?hl=en.

Reply via email to