2013-03-11 78 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