我正在使用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对象中的列,但肯定有更好的方法。谢谢!
答案 0 :(得分:0)
我对Sunspot一无所知,但我相信你的模型映射不正确。如果您有类似的关联:
1组 - > N个事件
您应该在模型中使用has_many
和belongs_to
。 has_one
仅用于关联1到1.在您的情况下:
class Group
has_many :events
#...
end
class Event
belongs_to :group
#...
end
Rails指南中有一个good article关于Active Record与示例的关联。你可以看看它。