2013-10-17 185 views
1

iOS開發人員在這裏學習Rails。試圖根據has_many關係的屬性來查詢活動記錄中的記錄。道歉,如果這很簡單,但我無法弄清楚。我讀過有關,並已嘗試使用scope.where.joins,但有這麼多矛盾的帖子和博客在網上我不能確定使用哪一個,什麼是正確的......Rails ActiveRecord通過has_many查找

上的問題:

我有兩個型號的ActiveRecord:

class User < ActiveRecord::Base 
    has_many :items 
end 

class Item < ActiveRecord::Base 
    belongs_to :user 
end 

的項目都有一個屬性title,我正在嘗試查找所有User,它們的項目與title的項目類似於某些字符串格式的搜索參數。

我已成功使用的物品搜索,然後.map這樣做這樣的:

users_owning_item_in_search_parameter = Item.where{ (title =~ my{@search_param + "%"}) }.map! { |i| i.user } 

(即語法來自squeel寶石)

但該命令返回Array當我想要一個ActiveRecord::Relation,因爲我需要做一些進一步的過濾需要這種實例類型。

任何幫助非常感謝。

+0

是否有物品「belongs_to:物品」而不是「belongs_to:用戶」的原因? – David

+0

是的,原因是...錯別字 –

+1

'User.find_each {| user | user.items.find_by_title('your string')}'是一個潛在的解決方案。 – David

回答

4

我認爲你在尋找這樣的事情:

User.joins(:items).where('items.title LIKE ?', "#{@search_param}%") 

你必須修改它一下,如果你想利用squeel的優勢。

+0

好吧,這對我來說很尷尬!謝謝 –

+1

Squeel如果有人想知道: 'User.joins(:items).where {items.title =〜my {param +「%」}' –

相關問題