Я вклад один из рубина по применению рельсов над 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
Спасибо заранее!
Нужен ли ваш объект пользователь/приложение. Если да, то добавьте его – Shishir
Вы пробовали 'has_many: comments,: through =>: commentable'? –