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>
> >
> >
> > > > > .
> > > > > 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.

Reply via email to