Путаница в полиморфной ассоциации, получить ресурс через ассоциацию - PullRequest
0 голосов
/ 13 февраля 2012

Я могу быть совершенно сбитым с толку и не нацеливаться здесь.

У меня есть модель события, в которой есть_ одна временная шкала, которая принадлежит_ событию.Timeline имеет_много TimelineItems, которые принадлежат Timeline.

def Event
  has_one :timeline
end

def Timeline
  belongs_to :event
  has_many :timeline_items
end

def TimelineItem
  belongs_to :timeline
end

create_table :admin_timeline_items do |t|
  t.references :admin_timeline
  t.references :user
  t.references :resource, :polymorphic => true
  t.string :method
end

Таким образом, из объекта TimelineItem я мог бы сгенерировать, например, такой вывод:

eml создал сообщение "Привет этоis from eml "on [DATE]

Заголовок" Привет, это из eml "будет происходить из .title объекта Post.Так, например.этот TimelineItem имеет эти настройки

item.user = User.where(:username => "eml")
item.resource_type = "Post"
item.resource_id = 1
item.created_at = 27/082...13:37

Таким образом, проблема заключается в извлечении указанного объекта Post или, вернее, правильного синтаксиса для этой конкретной ассоциации.Мне это кажется очень простым, но я не могу найти информацию, которая мне нужна, чтобы правильно написать ее.

Спасибо за вашу помощь и время.

1 Ответ

0 голосов
/ 13 февраля 2012

Извините ... Я просто запутался, потому что установил resource_id в моем собственном тестовом элементе с ошибочным значением.Мое первое предположение было верным.Это довольно просто:

class TimelineItem < ActiveRecord::Base
  belongs_to :timeline
  belongs_to :user
  belongs_to :resource, :polymorphic => true
end

Доступ к ресурсу примерно так:

TimelineItem.first.resource
=> Post(....)
...