Рельсы Полиморфные Ассоциации: Как получить и изменить комментируемые? - PullRequest
0 голосов
/ 22 апреля 2011

Есть 3 модели, скажем, статья, картинка и комментарий.Конечно, комментарий - это полиморфная модель.

Теперь я могу сделать что-то вроде @ article.comments и получить комментарии, но если у меня есть комментарий, как я могу узнать, исходит ли он из статьи или изображения??БД содержит только идентификатор.Я попробовал это (http://guides.rubyonrails.org/association_basics.html#polymorphic-associations),, но только что вернулся с нулем на commentable.

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

РЕДАКТИРОВАТЬ: Я пытался, и не работал

ruby-1.9.2-p180 :001 > user = User.find_by_username('name')
ruby-1.9.2-p180 :002 > user.owned_items
 => [#<OwnedItem id: 81233384, ownable_id: 861022540, user_id: 986759322, ...
ruby-1.9.2-p180 :003 > user.owned_items[0].ownable
 => nil 

1 Ответ

1 голос
/ 22 апреля 2011
def Article < ActiveRecord::Base
  has_many :comments, :as => :commentable
end

def Picture < ActiveRecord::Base
  has_many :comments, :as => :commentable
end

def Comment < ActiveRecord::Base
  belongs_to :commentable, :polymorpic => true
end

Но вы, вероятно, уже были так далеко;) Теперь вы можете сделать что-то вроде comment.where(:commentable_type => 'Event').commentable и он вернет событие для комментария.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...