0

Я вклад один из рубина по применению рельсов над GitHub, где я столкнулся следующий сценарий:Рубин на Rails: Полиморфные Ассоциация Путаница

Я имею следующие модели, которые я хочу, чтобы преобразовать, чтобы сделать полиморфный:

class Comment < ActiveRecord::Base 
    belongs_to :team 
    belongs_to :user 
    belongs_to :application 
    belongs_to :project 
end 

class Team < ActiveRecord::Base 
    has_many :comments 
end 

class Project < ActiveRecord::Base 
    has_many :comments, -> { order('created_at DESC') }, dependent: :destroy 
end 

class User < ActiveRecord::Base 
end 

class Application < Rails::Application 
end 

я сделал следующие изменения, чтобы сделать его полиморфным:

Выполните изменения базы данных для удаленного team_id, project_id, application_id и user_id и добавил commentable_id и commentable_type до comments стол.

Изменения в модели, как описано в рельсах направляющих .:

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

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

class Project < ActiveRecord::Base 
    has_many :comments, as: :commentable, -> { order('created_at DESC') }, dependent: :destroy 
end 

В то время как я использую его с размахом по умолчанию, он не позволяет мне использовать с областью по умолчанию и выдает ошибку с ниже линией:

has_many :comments, as: :commentable, -> { order('created_at DESC') }, dependent: :destroy 

Я смущен, чтобы изменить в следующих моделях:

class User < ActiveRecord::Base 
end 

class Application < ActiveRecord::Base 
end 

Если мне нужно Фолля вследствие изменений в моделях User и Application?

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

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

Спасибо заранее!

+1

Нужен ли ваш объект пользователь/приложение. Если да, то добавьте его – Shishir

+0

Вы пробовали 'has_many: comments,: through =>: commentable'? –

ответ

0

если объект пользователь/приложение нуждается в комментарии затем добавить

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

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

еще создать belongs_to/has_many отношения не полиморфный Eg.

class User < ActiveRecord::Base 
    has_many :comments 
end 

class Application < ActiveRecord::Base 
    has_many :comments 
end