Forum: Ruby on Rails help for ideas of instance method or controller

Posted by Soichi Ishida (soichi)
on 2012-11-11 07:31
I have a general question about Rails controller or instance method.


Say, I have two models,

  Give
  Take

Each of these has an identical set of columns like,

  Give : weight:integer, day:date
  Take: weight:integer, day:date

When @give = Give.new is created, I want to search if there is a
counterpart, Take, having the same values, weight and day.  So I need to
define a search method somewhere.

I believe it will look like

 @give = Give.new
 ...
 if @give.search_counter  #<- returns true if the counterpart exists
   ...
 else
 end

This must work for Take as well

 @take = Take.new
 ...
 if @take.search_counter  #<- returns true if the counterpart exists
   ...
 else
 end


Questions:
 Is it possible?  I am not sure if the method works without arguments...
 Where do I have to define the method? application_controller.rb maybe?

soichi
Posted by Colin Law (Guest)
on 2012-11-11 10:06
(Received via mailing list)
On 11 November 2012 06:31, Soichi Ishida <lists@ruby-forum.com> wrote:
>   Give : weight:integer, day:date
>  if @give.search_counter  #<- returns true if the counterpart exists
>  else
>  end
>
>
> Questions:
>  Is it possible?  I am not sure if the method works without arguments...
>  Where do I have to define the method? application_controller.rb maybe?

It looks to me as if you should only have one table for both give and
take.  Is there a reason why this is not possible.

Colin
Posted by Soichi Ishida (soichi)
on 2012-11-11 10:24
>
> It looks to me as if you should only have one table for both give and
> take.  Is there a reason why this is not possible.



You might be right.  I will try that way.
Thanks.

soichi
Posted by Colin Law (Guest)
on 2012-11-11 10:57
(Received via mailing list)
On 11 November 2012 09:24, Soichi Ishida <lists@ruby-forum.com> wrote:
>>
>> It looks to me as if you should only have one table for both give and
>> take.  Is there a reason why this is not possible.
>
>
>
> You might be right.  I will try that way.
> Thanks.

Note that you can have multiple associations into the same table using
and :class_name option.  So for example
class Something
  belongs_to :give, :foreign_key => "give_id", :classname => "Widget"
  belongs_to :take, :foreign_key => "take_id", :classname => "Widget"

Have a look at the Rails Guide on ActiveRecord Associations for more
information.

Colin
Posted by Soichi Ishida (soichi)
on 2012-11-11 11:09
> Note that you can have multiple associations into the same table using
> and :class_name option.  So for example
> class Something
>   belongs_to :give, :foreign_key => "give_id", :classname => "Widget"
>   belongs_to :take, :foreign_key => "take_id", :classname => "Widget"
>
> Have a look at the Rails Guide on ActiveRecord Associations for more
> information.


Thanks. I always wonder why I do things more complicated than 
necessary... ;)

soichi
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.