我一直在爲此奮鬥了整整一天。Rails 3基於範圍的活動記錄抓取關聯模型
這是我的。 A User
型號和Address
型號。 User
has_many :addresses
和Adddress
belongs_to :user
。
現在我想要搜索其電子郵件中包含授權字詞的用戶,或者其中一個用戶的地址包含該字詞。因此,可以說這個詞是'jap',任何User
的email like '%jap%'
或任何地址城市或地址是like '%jap%'
的用戶都應該返回。
我可以用一個簡單的用戶加入這樣
users = User.joins('LEFT OUTER JOIN addresses ON users.id=addresses.user_id').where('users.email like '%jap%' OR addresses.city like '%jap%' OR addresses.address_line like '%jap%')
這給了我想要的用戶。我想要的是,對於返回的用戶,我還希望那些符合條件的地址。
如果以上後,我做
users.first.addresses
它會給我所有的用戶的地址。我知道我可以通過對該用戶的地址進行另一個查詢,如下所示:
users.first.addresses.where(addresses.city like '%jap%' OR addresses.address_line like '%jap%')
但這不是它應該如何工作。我曾嘗試過使用包含和Google搜索功能,但尚未找到解決方案。任何人都遇到過這個?
編輯#1:有2個疑問很多類似的解決方案,我所追求的是一個單一的查詢解決方案,因爲對我來說沒有任何意義適用上的地址相同條件下的兩倍。
這和上面幾乎一樣,我已經這樣做了。但有了這個,我已經跑了兩個querries。像這樣 'users = User.user_or_address_like('arg')' 然後 'users.first.addresses.city_or_line_like('arg')' – Abid
我真正想要的是一個querry匹配並且還帶回匹配該用戶的地址 – Abid