0

我正在使用 Sunspot Solr 搜索事件,每个事件都有一个 group_id 引用一个 Group 对象(多个事件可以有同一个组)。如果用户搜索组名,我想找到正确的事件。

在可搜索块中尝试的解决方案

string :events_group_name do
  group.map(&:name)
end

错误

SQLite3::SQLException: 没有这样的列:groups.event_id: SELECT "groups".* FROM "groups" WHERE "groups"."event_id" = 3 LIMIT 1

问题是 Group 中没有 event_id,那么我怎样才能让它工作呢?解决方法是将组名保存为 Event 对象中的一列,但肯定有更好的方法。谢谢!

4

1 回答 1

0

我对太阳黑子一无所知,但我相信你的模型映射不正确。如果您有这样的关联:

1 组 -> N 个事件

您应该在模型中使用 ahas_many和 a belongs_tohas_one仅与关联 1 到 1 一起使用。在您的情况下:

class Group
  has_many :events
  #...
end

class Event
  belongs_to :group
  #...
end

Rails 指南有一篇关于 Active Record 关联示例的好文章。你可以看看它。

于 2013-03-11T19:04:47.700 回答