ere*_*ere 13 ruby-on-rails associations mongodb mongoid ruby-on-rails-3
我正在尝试通过关联的用户名找到记录,该用户名包含在belongs_to关系中,但它不起作用.
文章属于用户用户有很多文章
Article.where(user_id: someid) 工作正常,但我想使用用户名作为参考,存储在Users表中.
Article.includes(:user).where(:username => "erebus")
Article.includes(:user).where("user.username" => "erebus")
Run Code Online (Sandbox Code Playgroud)
我也有 identity_map_enabled: true
Article.includes(:user).inclusions 返回关系详细信息
不起作用,我不理解什么?
rub*_*ish 29
你必须记住,mongodb中没有连接.在关系数据库中,includes形成连接查询,您可以使用查询中的两个表中的列.然而,由于mongodb中没有连接,同样是不可能的.
在mongoid中,includes只需保存一堆db调用.它在身份映射中获取并存储相关记录以便快速检索,但在查询时,一个查询只能处理一个集合.
如果您需要基于用户名的文章,我建议您进行以下解决方法:
user_ids = User.where(username: 'erebus').only(:_id).map(&:_id)
articles = Article.where(:user_id.in => user_ids)
Run Code Online (Sandbox Code Playgroud)
bos*_*vic 14
你可以根据rubish建议的那样缩短它:
user_ids = User.where(username: 'erebus').pluck(:id)
articles = Article.where(:user_id.in => user_ids)
Run Code Online (Sandbox Code Playgroud)
或者一个班轮:
articles = Article.where(:user_id.in => User.where(username: 'erebus').pluck(:id))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8199 次 |
| 最近记录: |