太阳黑子搜索has_one关联,其他模型没有外键

时间:2013-03-11 18:07:02

标签: ruby-on-rails sunspot sunspot-rails

我正在使用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

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

1 个答案:

答案 0 :(得分:0)

我对Sunspot一无所知,但我相信你的模型映射不正确。如果您有类似的关联:

  

1组 - > N个事件

您应该在模型中使用has_manybelongs_tohas_one仅用于关联1到1.在您的情况下:

class Group
  has_many :events
  #...
end

class Event
  belongs_to :group
  #...
end

Rails指南中有一个good article关于Active Record与示例的关联。你可以看看它。