У меня есть модель комментариев, которая представляет собой полиморфную ассоциацию, которая связана со статусами и фотографиями. Как я могу создать эту полиморфную ассоциацию, чтобы она также принадлежала пользователю, чтобы, когда пользователь создает комментарий под статусами или фотографиями, он также получал идентификатор current_user?

Это то, что у меня есть сейчас -

class Comment < ActiveRecord::Base
  belongs_to :commentable, polymorphic: true
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :comments
end

class Status < ActiveRecord::Base
  has_many :comments, as: :commentable
end

class Photo < ActiveRecord::Base
  has_many :comments, as: :commentable
end

Повторюсь, как я могу создать комментарий как пользователь, но также разместить его под статусом или фотографией? ему потребуется user_id.

Вот где у меня проблема - как мне это настроить?

def create 
    @comment = @commentable.comments.new(comments_params) 
    if @comment.save
      redirect_to @commentable, notice: "Comment created"
    else
      render :new
    end
  end
0
Dylan Little 24 Фев 2015 в 22:23

2 ответа

Лучший ответ

Это немного взломано, но я нашел обходной путь. Итак, в моем CommentsController я сделал следующее:

def create 
    new_params = comments_params
    new_params[:user_id] = current_user.id
    @comment = @commentable.comments.build(new_params)

    if @comment.save
      redirect_to @commentable, notice: "Comment created"
    else
      render :new
    end
  end

Это поместило user_id, что мне было нужно.

0
Dylan Little 24 Фев 2015 в 20:50

Попробуй это

class Comment < ActiveRecord::Base
  belongs_to :likable, :polymorphic => true
  belongs_to :commentable, :polymorphic => true
  belongs_to: user

class User < ActiveRecord::Base
  has_many :statuses, :as => :likable
  has_many :photos, :as => :commentable 
  has_many :comments   


class Status < ActiveRecord::Base
  has_many :comments, :as => :likable, :dependent => :destroy  


class Photos < ActiveRecord::Base
  has_many :comments, :as => :commentable, :dependent => :destroy  
0
Sonalkumar sute 24 Фев 2015 в 20:25