Ruby on rails 太阳黑子搜索有一个关联,另一个模型没有外键

Ruby on rails 太阳黑子搜索有一个关联,另一个模型没有外键,ruby-on-rails,sunspot,sunspot-rails,Ruby On Rails,Sunspot,Sunspot Rails,我使用Sunspot Solr搜索事件,每个事件都有一个组id,该组id引用一个组对象(多个事件可以有相同的组)。如果用户搜索组名,我希望找到正确的事件 在可搜索块中尝试解决方案 string :events_group_name do group.map(&:name) end 错误 SQLite3::SQLException:没有这样的列:groups.event\u id:从“groups”中选择“groups”。*其中“groups”。“event\u id”=3限制1 问

我使用Sunspot Solr搜索事件,每个事件都有一个组id,该组id引用一个组对象(多个事件可以有相同的组)。如果用户搜索组名,我希望找到正确的事件

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

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

SQLite3::SQLException:没有这样的列:groups.event\u id:从“groups”中选择“groups”。*其中“groups”。“event\u id”=3限制1


问题是组中没有事件id,所以我如何才能让它工作?解决方法是将组名保存为事件对象中的列,但肯定有更好的方法。谢谢大家!

我对太阳黑子一无所知,但我相信你的模型映射错误。如果您有如下关联:

1组->N个事件

在您的模型中,您应该使用一个具有多个且属于的
<代码>有一个
仅用于关联1到1。就你而言:

class Group
  has_many :events
  #...
end

class Event
  belongs_to :group
  #...
end

Rails指南中有一个关于活动记录关联的示例。你可以看看。

非常感谢!我弄明白了,首先我们根据你的建议(愚蠢的我)将其更改为属于,然后在可搜索的块中添加,文本:group do group.name if group end(检查组是否为零)