"belongs_to" aliases

Hi,

Since “belongs_to” does not actually reflect (as an English wording) the
real association that one object might have to another, I was thinking
about aliasing it using the following code:

class ActiveRecord::Base
class << self
alias :refers_to :belongs_to
alias :is_of :belongs_to
alias :has_a :belongs_to
end
end

Is it a proper way to do that? Or Is there another better alternative?

Panayotis M.

On Friday, September 14, 2012 8:24:53 AM UTC+1, Panayotis M.
wrote:

alias :is_of     :belongs_to
alias :has_a     :belongs_to

end
end

Well I think that would work, but personally I wouldn’t - I think you’re
sacrificing readability of the source (people have to know/remember
about
your extensions) just to make it sound better in english (has_a in
particular muddies the water further between has_one & belongs_to). Dave
Thomas articulated this better than I could a while
ago:
http://pragdave.blogs.pragprog.com/pragdave/2008/03/the-language-in.html

Fred

You may be right, but I have found a lot of other posts on Internet that
they complain about “belongs_to”. It does not bear the correct meaning
for
all cases. For example:

class Product

belongs_to :status

end

…Awful. No, the Product does not “belong” to a Status. It “has_a”
status.

Also, “belongs” usually means that a “composition” relationship, such
that
if Status were to be removed, the corresponding Product would have to be
removed too.

Another example:

class Product

belongs_to :type

end

…Awful again. The product Types preexist the Products and a Product
does
not belong to a type. “is of” a type.

Certainly, the “belongs_to” as a DSL does not describe the domain on the
particular cases.

Thanks for letting me know that my workaround will work. I will have the
second thoughts on whether to use or not. I have read the article by
Dave.
Thanks for that reference too.

On Fri, Sep 14, 2012 at 12:59 PM, Frederick C. <
[email protected]> wrote:

your extensions) just to make it sound better in english (has_a in
“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].
To view this discussion on the web visit
https://groups.google.com/d/msg/rubyonrails-talk/-/PiHuxshy4Y0J.

For more options, visit https://groups.google.com/groups/opt_out.


Panayotis M.
P.S.: I am sending SMS over the WEB using Rayo SMS
http://sms.rayo.gr/
E-mail: [email protected]
Site: http://www.matsinopoulos.gr
Mobile: +30 697 26 69 766
*Skype Id: *panayotis.matsinopoulos
*Facebook: *Panos Matsinopoulos
Twitter: http://www.twitter.com/pmatsino
LinkedIN: http://www.linkedin.com/in/panayotismatsinopoulos
Github: pmatsinopoulos (Panos Matsinopoulos) · GitHub
Rubygems: Profile of pmatsino | RubyGems.org | your community gem host
CodeProject: Panayotis Matsinopoulos - Professional Profile - CodeProject
ODesk Profile: https://www.odesk.com/users/~~c84135e75d1f2303

Panayotis M. wrote in post #1076115:

You may be right, but I have found a lot of other posts on Internet that
they complain about “belongs_to”. It does not bear the correct meaning
for
all cases. For example:

class Product

belongs_to :status

end

…Awful. No, the Product does not “belong” to a Status. It “has_a”
status.

The “belongs to” is not really intended to mean what you seem to think
it means. The way I think about it is that the product “object” belongs
to the status “object”.

I agree with Frederick. I see no reason to muddy the waters and
potentially confuse experience Rails developers.

Consistency in naming is far more important than grammar syntax in an
API. Besides that, has_many, belongs_to, etc. are internal
implementation details. Not need to worry to much about the public API
that the are used internally to create:

product.status

It makes little difference what the internal implementation of Product
looks like from the outside.