Rails HABTM过滤器

时间:2013-12-10 14:44:10

标签: ruby-on-rails has-and-belongs-to-many

我觉得我正在做的事情非常非常简单,我发现的所有资源都比较复杂,试图复制它们或简化它们会让我感到困惑。

我有两个具有HABTM关系的对象(故事和角色)。

我的目标是能够列出涉及特定角色的所有故事。

如果我做Story.where(“stories_characters.character_id = 17”),我收到一个错误,它在我的故事表中找不到名为“stories_characters.character_id”的列。

解决这个问题的正确方法是什么?

我知道有连接表的怪异,但我看到的每个例子都是对两个ID进行过滤,而不仅仅是一个......

1 个答案:

答案 0 :(得分:1)

你有连接表吗?您必须有一个名为characters_stories的连接表,其中包含名为character.id和story.id的列。我认为这是HABTM的要求。在您的模型中,您需要定义:

故事

:has_and_belongs_to_many => :characters

字符

:has_and_belongs_to_many => :stories

一旦你把它全部接通了,你应该能够做到:

char = Character.find(17)
char.stories