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 _______________________________________________ Rails mailing list Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org http://lists.rubyonrails.org/mailman/listinfo/rails
I found the answer at http://rails.techno-weenie.net/question/2005/12/14/avoiding_hidden_field 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 Sheth <vpsheth-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > 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.rbfrom 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 > >_______________________________________________ Rails mailing list Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org http://lists.rubyonrails.org/mailman/listinfo/rails
Mike Harris
2005-Dec-29 22:20 UTC
Re: Re: has_many & belongs_to with Plugins (login_engine)
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. Vaishal Sheth wrote:> I found the answer at > http://rails.techno-weenie.net/question/2005/12/14/avoiding_hidden_field > > 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 Sheth* < vpsheth-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org > <mailto:vpsheth-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>> wrote: > > H > > > > > ello 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 > > >------------------------------------------------------------------------ > >_______________________________________________ >Rails mailing list >Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org >http://lists.rubyonrails.org/mailman/listinfo/rails > >