Forum: Ruby on Rails has_many & belongs_to with Plugins (login_engine)

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Vaishal S. (Guest)
on 2005-12-29 23:16
(Received via mailing list)
Hello list,

Probably a newbie question but couldn't find the answer in the archives.

I am using the login_engine Plugin to implement the login functionality.
I
have a JournalEntry model that interacts with the journal_entries table.
I
would like to link the journal entries to the user who entered it.
Essentially, it is a one to many relationship between the model
User(from
login_engine) and my JournalEntry model.

My database has a users table (resulting from a standard implementation
of
the login_engine) and the journal_entries table has a user_id field and
a
foreign key constraint to the id field in the users table.

To specify the relationship between the two models, in the JournalEntry
model, I have
class JournalEntry < ActiveRecord::Base
  belongs_to :user

And to specify the has_many relationship, I figured I would have to
override
the User model in the login_engine.  Hence I copied the user.rb from the
<myapp>/vendor/plugins/login_engine/app/models to <myapp>/app/models and
modified it as below
class User < ActiveRecord::Base
  has_many :journal_entries
  include LoginEngine::AuthenticatedUser
  ..

Now my limited undertanding tells me that after reloading the app, if I
login and create a new journal entry, the user_id colum should be
populated
with the user_id of the user that created the entry but it's not doing
that.
Am I missing something?  Do I have to specify it explicitly somewhere?
Or,
since the user model is in a plugin, do I have to specify it some other
way
like belongs_to :LoginEngine:User (I know the syntax is wrong)?

Thanks in advance for any help,
Vaishal
Vaishal S. (Guest)
on 2005-12-29 23:40
(Received via mailing list)
I found the answer at
http://rails.techno-weenie.net/question/2005/12/14...

My understanding was wrong. Rails wouldn't automatically enter the
values
upon record save just because I have specified the belongs_to and
has_many
relationship. It has to be explicitly done in the code.

So then, why are relationships useful in my case? Just for retrieval
using
the find()?

On 12/29/05, Vaishal S. <removed_email_address@domain.invalid> wrote:
>
> H




ello list,
Mike H. (Guest)
on 2005-12-30 00:22
(Received via mailing list)
For any time where you are in or have an instance of model A, and wish
to access the corresponding objects of Model B.  I don't find this to be
a trivial case.

Regarding your example, the system has no way of knowing that you want
the user column to be filled in with the currently logged in user.  It
seems obvious to you, but the system can't know that.  Extend your
example to a relationship that doesn't involve user, and your issue is
no longer applicable, yet the relationship constructs are enormously
useful.
This topic is locked and can not be replied to.