Has_one:通过多态性belongs_to
我有一个标记模型,与标签和可标记项目的多态关联。可标记项目都与feed_item(has_one:feed_item)有关联。我想将标记与feed_item关联,即在tagging.rb中Has_one:通过多态性belongs_to
belongs_to :taggable, :polymorphic => true
belongs_to :tag, :polymorphic => true
has_one :feed_item, :through => :taggable
此has_one关联不起作用。例如在控制台Tagging.first.feed_item中导致错误
NameError: uninitialized constant Tagging::Taggable
有关如何设置这种关联的建议?
对于背景,下面是一个可加标签对象的模型的一个例子:
has_one :feed_item, :as => :item
IE:一个标记HAS_ONE可加标签对象,它HAS_ONE feed_item。
替换此:
has_one :feed_item, :through => :taggable
与此:
def feed_item
self.taggable.feed_item
end
现在你可以调用@taggable.feed_item
,它会工作。
该方法将工作..但我不认为它真的是一个关联。我这样说,是因为我想通过这个协会来传达伟大的图景。例如,如果我有一个包含许多标签的文章,并且我现在想将该文章与has_many:feed_items,:through =>:tagging关联起来,那么这将无法将上述方法识别为关联。 (即Article.feed_items错误,表示否:标记模型中存在feed_item关联)。 – jay 2012-02-15 06:05:20
什么? 'FeedItem'属于'Tagging'本身还是属于可标记对象('Article'等等)?请在'feed_item.rb'中发布关联。 – Substantial 2012-02-15 07:31:21
@gg_s FeedItem属于TaggableObject(OP编辑帖子) – Rahul 2012-02-15 07:36:31
什么是被调用来产生该错误? – Substantial 2012-02-15 05:47:43
a = Tagging.first.feed_item – jay 2012-02-15 05:50:21
你不能通过belongs_to has_one。 – Eric 2012-02-15 05:52:40