For those who are wondering. I need the social table class, to keep track of user interactions. An interaction can be comment, upload, like, etc. I need this table, because in the future I will have a page that displays recent user interactions sorted by created_at
On Aug 29, 7:14 am, Christian Fazzini <[email protected]> wrote: > Ok, I've been on this issue for several hours already. If someone with > more RoR experience can help me out. It will be much appreciated. > > A small description of what I am trying to do. In the deal show view. > I want to display comments for a particular deal. So far everything > works, except that I am unable to list down the comments. I can submit > comments without any problems. > > Here is my code: > > social migration: > > class CreateSocials < ActiveRecord::Migration > def self.up > create_table :socials do |t| > t.references :user > t.references :deal > t.references :entity, :polymorphic => true > #t.references :commentable, :polymorphic => true > > t.timestamps > end > end > > def self.down > drop_table :socials > end > end > > ----------- > social model class > > class Social < ActiveRecord::Base > belongs_to :deal > belongs_to :user > belongs_to :entity, :polymorphic => true > has_many :comments > #has_one :comment, :dependent => :destroy > > #Social table should have belongs_to :entity, :polymorphic => true > #t.references :entity, :polymorphic => true > #belongs_to :entity, :polymorphic => true > end > > ---------- > comment migration: > > class CreateComments < ActiveRecord::Migration > def self.up > create_table :comments do |t| > #t.references :user > #t.references :entity, :polymorphic => true > #t.integer :commentable_id > #t.string :commentable_type > > t.text :comment > > t.timestamps > end > end > > def self.down > drop_table :comments > end > end > > -------- > comment model class: > > class Comment < ActiveRecord::Base > #belongs_to :user > #belongs_to :entity, :polymorphic => true > > #has_one :social > #belongs_to :user > > #def after_create > #why dont you make the form on Comment, and create the Social > record in Comments after_create hook or something like that? > #Social.create(:entity => self) > #end > end > > -------- > deal migration: > > class CreateDeals < ActiveRecord::Migration > def self.up > create_table :deals do |t| > t.references :city > t.references :user > > t.string :title > t.text :description > t.integer :price > t.integer :value > t.integer :discount > t.integer :savings > t.integer :goal > t.datetime :countdown > t.integer :purchased > > t.timestamps > end > end > > def self.down > drop_table :deals > end > end > > ----------- > deal model class > > class Deal < ActiveRecord::Base > validates_presence_of :city_id > > validates_presence_of :title, :description, :price, :value, :discount, > :savings, :goal, :countdown, :purchased > validates_length_of :title, :minimum => 5 > > belongs_to :city > belongs_to :user > > has_many :features, :dependent => :destroy > has_many :photos, :dependent => :destroy > > has_many :socials, :as => :entity > #has_many :comments, :through => :socials, :source => :comments > #has_many :socials; has_many :comments, :through => :socials > #has_many :social, :dependent => :destroy > #has_many :socials, :as => :entity > > accepts_nested_attributes_for :features, :reject_if => lambda { |a| > a[:description].blank? }, :allow_destroy => true > accepts_nested_attributes_for :photos, :reject_if => lambda { |a| > a[:photo].blank? }, :allow_destroy => true > > #has_attached_file :photo, :styles => { :small => "150x150>" }, > # :url => "/assets/ > deals/:id/:style/:basename.:extension", > # :path => ":rails_root/public/assets/ > deals/:id/:style/:basename.:extension" > > #validates_attachment_presence :photo > #validates_attachment_size :photo, :less_than => 5.megabytes > #validates_attachment_content_type :photo, :content_type => ['image/ > jpeg', 'image/png'] > > #def self.search(search, page) > # paginate :per_page => 1, :page => page, > # #:conditions => ['name like ?', "%#{search}%"], > # :order => 'created_at' > #end > > define_index do > indexes title, :sortable => true > indexes description > #indexes :name, :sortable => true > #indexes comments.content, :as => :comment_content > #indexes [author.first_name, author.last_name], :as > => :author_name > indexes [user.first_name, user.last_name], :as => :full_name > > #has author_id, created_at > has created_at > end > > def comments > # self.socials.collect { |a| a.comment } > #Comment.find(:conditions => 'id = 1') > self.socials.collect { |a| a.comment } > end > end > > -------- > This is my view: > deal show view: > > ... some html stuff here pertaining to the @deal object ... > > <table> > <tr> > <th>Comments</th> > </tr> > > <% @deal.comments.each do |comment| %> > <tr> > <td><%=h comment.comment %></td> > <td><%= link_to 'Show', comment %></td> > <td><%= link_to 'Edit', edit_comment_path(comment) %></td> > <td><%= link_to 'Destroy', comment, :confirm => 'Are you > sure?', :method => :delete %></td> > </tr> > <% end %> > </table> > > <% form_for [...@comment, Comment.new] do |f| %> > <%= f.error_messages %> > <%= hidden_field_tag :deal_id, params[:id] %> > <p> > <%= f.label :comment, 'New comment' %><br /> > <%= f.text_area :comment %> > </p> > <p><%= f.submit 'Add comment' %></p> > <% end %> > > The problem is. ":through" does not work properly with polymorphic > associations... > > Any assistance on this issue is a big help. -- 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

