no, with what i showed you you can do
<%...@user.comments.each |comment|%> <%=h comment.content%> <%comment.products.each do |product|%> <%=product.name%> <%end%> <%end%> also <%...@product.comments.each |comment|%> <%=h comment.content%> <%comment.users.each do |user|%> <%=user.name%>%> <%end%> but what do you mean by and upload table??? On Fri, Sep 10, 2010 at 8:39 AM, Christian Fazzini < christian.fazz...@gmail.com> wrote: > Hi Radhames. Yea, the case you mention above would work. Except, since > you are suggesting I have a comment table on its own. Then I would > need to have a like and upload table on its own as well. > > If I needed to list recent interactions (to list down a user feed), I > would have to union join the comment, like and upload tables. If I had > one table called interactions, I could just query this ONE table and > add a where clause (user_id =12, for example) and sort by created_at. > Performance wise, it is better then having to union join 3 other > tables together... > > The question is now, whether this should be done using a polymorphic > association or STI > > On Sep 10, 8:16 am, radhames brito <rbri...@gmail.com> wrote: > > dont touch the type fields. > > > > If you have a child model that you have to attach to different models use > > polymorphic associations. > > if you have 2 models with a few different fields use STI. > > > > if it guess too clomplex is means you choose wrong and you were so > suppose > > to use the other kind of association. > > > > thi the case you are saying you dont need any of those, only a comment > model > > that belongs to product and to user like this > > > > class user > > has_many comments ## the table should not > have > > a comment_id field > > has_many products :through =>comments > > > > class product > > has_many comments ## the table should not > have > > a comment_id field > > has_many users :through =>comments > > > > class comment > > belongs_to :user > > belongs_to :product > > > > the coment migration should be like this > > > > create_table :comments do |t| > > t.integer :user_id > > t.integer :product_id > > t.content > > t.timestamp > > > > On Thu, Sep 9, 2010 at 6:09 PM, Christian Fazzini < > > > > christian.fazz...@gmail.com> wrote: > > > Redhames, got it thanks! Have tested this and now seems to work. Even > > > the type field is put in automatically when the form submits. > > > > > Is this normal that the type field saves as "CitySuggestion" and > > > "BusinessSuggestion" respectively? Can I change the way it saves, as > > > "city" or "business", instead? > > > > > Can we talk about the design factor for this. I realise the potential > > > of STI's now. However, lets assume this scenario. > > > > > Ive got user and product. A user can leave comments, like, upload > > > products. These are called interactions. On a product page, I need to > > > display the product and all comments for the product. I also have a > > > user page with a section that displays all the users recent > > > interactions, sorted by the created_at date. > > > > > I was thinking of using an STI for this, with something like: > > > > > class Interaction < ActiveRecord::Base > > > attr_accessible :user_id, :product_id, :comment, :ip_address, :type > > > > > ---------- > > > class Comment < Suggestion > > > attr_accessible :user_id, :product_id, :comment > > > > > ---------- > > > class Upload < Suggestion > > > attr_accessible :user_id, :product_id, :ip_address > > > > > ---------- > > > class Like < Suggestion > > > attr_accessible :user_id, :product_id > > > > > However, I was also considering using a polymorphic behavior. Or in > > > your opinion, would an STI be more suitable for this? > > > > > On Sep 10, 3:06 am, radhames brito <rbri...@gmail.com> wrote: > > > > yes thats rigth, everything will behave as if you had 2 tables , is > > > normal > > > > RoR from now on. > > > > > > yes dont be afraid to ask. > > > > > > On Thu, Sep 9, 2010 at 1:06 PM, Christian Fazzini < > > > > > > christian.fazz...@gmail.com> wrote: > > > > > Thanks Radhames. Ok I got it up to there. I am assuming since we > are > > > > > creating controllers for city_suggestions and business_suggestions, > we > > > > > will also need to create view for them respectively? i.e. > /app/views/ > > > > > city_suggestions and /app/views/business_suggestions right? > > > > > > > I appreciate your patience and thorough explanation regarding STI. > > > > > Once I grasp this concept properly, I can apply the same knowledge > on > > > > > other cases :-) > > > > > > > On Sep 9, 10:26 pm, radhames brito <rbri...@gmail.com> wrote: > > > > > > sorry i forgot you use scaffold , here is the thing ill make a > guide > > > for > > > > > > this , from the migration step by step to the view > > > > > > > > create a table like this > > > > > > > > create_table :sugestions do |t| > > > > > > t.string first_name > > > > > > t.string last_name > > > > > > t.string email > > > > > > t.string business_name > > > > > > t.string business_address > > > > > > t.string city_name > > > > > > t.string type > > > > > > end > > > > > > > > no more tables are needed > > > > > > > > create a model > > > > > > > > Sugestion , (singular) as normal it should inherit from active > record > > > > > base > > > > > > like this > > > > > > > > class Sugestion < ActiveRecord::Base > > > > > > > > attr_accessible : first_name,last_name, email, business_name, > > > > > > business_address, city_name > > > > > > > > then create the tu other model that inherit from Sugestion, note > that > > > is > > > > > > they is a capital letter in the model name rails will put an > > > underscore > > > > > like > > > > > > this city_sugestions_controller > > > > > > > > class CitySugestion < ActiveRecord::Base > > > > > > > > attr_accessible : first_name,last_name, email, city_name > > > > > > > > and another > > > > > > > > class bussinessSugestion < ActiveRecord::Base > > > > > > > > attr_accessible : first_name,last_name, email,business_name, > > > > > > business_address > > > > > > > > note i think type should not be available with mass assignment. > > > > > > > > then create the controllers for the 2 sugestions classes > > > > > > > > city_sugestions_controller > > > > > > > > and > > > > > > > > bussiness_sugestions_controller > > > > > > > > from here one this controller will never notice you have only one > > > table > > > > > they > > > > > > will behave as if you had 2 different tables in the db > > > > > > > > in you views just refer to @bussinesssugestions and it will be > scoped > > > > > thanks > > > > > > to the type field that active record will automaticly use then > you > > > save > > > > > an > > > > > > object of either class. Dont try to access the type field using > > > > > > @citysuggestion.type or @suggestion.type as type is a ruby method > and > > > > > will > > > > > > be called instead of > > > > > > the table field, use @sugestion[:type] , the other fields can be > > > called > > > > > as > > > > > > normal. > > > > > > > > If you want to handle the sugestion class directly you can create > a > > > > > > sugestions_controller, it its corresponding viwes for it and have > a > > > named > > > > > > scope that filter each type. > > > > > > > > Dont be afraid to keep asking if you are still confuse and keep > in > > > mind > > > > > that > > > > > > in most case, people are not specting that you would use > scaffolds > > > every > > > > > > time since scaffold are more like a learning tool that an actual > way > > > of > > > > > > doing things. > > > > > > > > if you want to use scaffold anyway you can create the scaffold > and > > > skip > > > > > > creating the migrations with > > > > > > > > script/generate scaffold --skip-migrations > > > > > > > > On Thu, Sep 9, 2010 at 9:52 AM, Christian Fazzini < > > > > > > > > christian.fazz...@gmail.com> wrote: > > > > > > > Yes I know, I am just trying to understand how to implement > this > > > > > > > properly. It's easy enough to rollback the migration and remove > the > > > > > > > respective migration files. However, I need to know whether I > need > > > > > > > controllers, models and views for citysuggestion and > > > > > > > businesssuggestion > > > > > > > > > On Sep 9, 9:46 pm, Marnen Laibow-Koser <li...@ruby-forum.com> > > > wrote: > > > > > > > > Christian Fazzini wrote: > > > > > > > > > I thought you said I needed to scaffold the citysuggestion > and > > > > > > > > > businesssuggestion? Scaffold generates controllers, views, > and > > > > > models > > > > > > > > > (if they already dont exist)? > > > > > > > > > > > If I do rake db:migrate, it generates the tables in the db. > > > Should > > > > > I > > > > > > > > > remove the migration files that the scaffold generator > > > generates > > > > > > > > > before doing rake db:migrate? > > > > > > > > > > Stop relying so much on the scaffold generator. You've > probably > > > gone > > > > > > > > beyond the point where it's useful. > > > > > > > > > > Best, > > > > > > > > -- > > > > > > > > Marnen Laibow-Koserhttp://www.marnen.org > > > > > > > > mar...@marnen.org > > > > > > > > -- > > > > > > > > Posted viahttp://www.ruby-forum.com/. > > > > > > > > > -- > > > > > > > You received this message because you are subscribed to the > Google > > > > > Groups > > > > > > > "Ruby on Rails: Talk" group. > > > > > > > To post to this group, send email to > > > rubyonrails-talk@googlegroups.com > > > > > . > > > > > > > To unsubscribe from this group, send email to > > > > > > > rubyonrails-talk+unsubscr...@googlegroups.com<rubyonrails-talk%2bunsubscr...@googlegroups.com> > <rubyonrails-talk%2bunsubscr...@googlegroups.com<rubyonrails-talk%252bunsubscr...@googlegroups.com> > > > > > <rubyonrails-talk%2bunsubscr...@googlegroups.com<rubyonrails-talk%252bunsubscr...@googlegroups.com> > <rubyonrails-talk%252bunsubscr...@googlegroups.com<rubyonrails-talk%25252bunsubscr...@googlegroups.com> > > > > > > > > > <rubyonrails-talk%2bunsubscr...@googlegroups.com<rubyonrails-talk%252bunsubscr...@googlegroups.com> > <rubyonrails-talk%252bunsubscr...@googlegroups.com<rubyonrails-talk%25252bunsubscr...@googlegroups.com> > > > > > <rubyonrails-talk%252bunsubscr...@googlegroups.com<rubyonrails-talk%25252bunsubscr...@googlegroups.com> > <rubyonrails-talk%25252bunsubscr...@googlegroups.com<rubyonrails-talk%2525252bunsubscr...@googlegroups.com> > > > > > > > > > > > . > > > > > > > For more options, visit this group at > > > > > > >http://groups.google.com/group/rubyonrails-talk?hl=en. > > > > > > > -- > > > > > You received this message because you are subscribed to the Google > > > Groups > > > > > "Ruby on Rails: Talk" group. > > > > > To post to this group, send email to > rubyonrails-talk@googlegroups.com > > > . > > > > > To unsubscribe from this group, send email to > > > > > rubyonrails-talk+unsubscr...@googlegroups.com<rubyonrails-talk%2bunsubscr...@googlegroups.com> > <rubyonrails-talk%2bunsubscr...@googlegroups.com<rubyonrails-talk%252bunsubscr...@googlegroups.com> > > > > > <rubyonrails-talk%2bunsubscr...@googlegroups.com<rubyonrails-talk%252bunsubscr...@googlegroups.com> > <rubyonrails-talk%252bunsubscr...@googlegroups.com<rubyonrails-talk%25252bunsubscr...@googlegroups.com> > > > > > > > > > . > > > > > For more options, visit this group at > > > > >http://groups.google.com/group/rubyonrails-talk?hl=en. > > > > > -- > > > You received this message because you are subscribed to the Google > Groups > > > "Ruby on Rails: Talk" group. > > > To post to this group, send email to rubyonrails-talk@googlegroups.com > . > > > To unsubscribe from this group, send email to > > > rubyonrails-talk+unsubscr...@googlegroups.com<rubyonrails-talk%2bunsubscr...@googlegroups.com> > <rubyonrails-talk%2bunsubscr...@googlegroups.com<rubyonrails-talk%252bunsubscr...@googlegroups.com> > > > > > . > > > For more options, visit this group at > > >http://groups.google.com/group/rubyonrails-talk?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails-t...@googlegroups.com. > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscr...@googlegroups.com<rubyonrails-talk%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-t...@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.