2013-03-11 70 views
0

我正在使用Sunspot Solr来搜索事件,并且每个事件都有一个引用组对象的group_id(多个事件可以具有相同的组)。如果用户搜索组名称,我想找到正确的事件。太阳黑子搜索has_one关联,其他模型没有外键

在可搜索的块

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

错误

SQLite3的::的SQLException尝试的解决方案:没有这样的柱:groups.event_id:SELECT “基团” * FROM “基团” WHERE “基团”。 “event_id”= 3限制1

问题是组中没有event_id,所以如何才能使其工作?解决方法是将组名称保存为Event对象中的列,但肯定有更好的方法。谢谢!

回答

0

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

1组 - > N个事件

您应该使用has_many和模型中的belongs_tohas_one仅与协会1使用1。你的情况:

class Group 
    has_many :events 
    #... 
end 

class Event 
    belongs_to :group 
    #... 
end 

Rails的手册有一个good article约举例Active Record的关联。你可以看看它。

+1

谢谢!我想到了,首先我们根据你的建议(愚蠢的愚蠢我)将它改为belongs_to,然后在可搜索的块中添加文本:group do group.name如果组结束(检查组是否为零) – Andy 2013-03-11 19:23:55