当前位置: 首页 > 面试题库 >

Rails-has_one关系:关联和非关联对象的范围

艾阳羽
2023-03-14
问题内容

我有这种关系:一个用户可以有零只或一只狗,但是一只狗必须属于某人。

# dog.rb
class Dog < ActiveRecord::Base
  belongs_to :user
end

# user.rb
class User < ActiveRecord::Base
  has_one :dog
end

我想定义以下范围:

User.with_a_dog
User.without_a_dog

我可以在第一种情况下执行此操作,因为默认情况下,在rails中,联接是INNER JOIN:

scope :with_a_dog, :joins(:dog)

1 /这种针对第一个示波器的解决方案是否足够好?

2 /第二个课程你会做什么?

3 /(有一些关联)是否有更好的方法?:

# user.rb
def has_a_dog?
  !self.dog.nil?
end

谢谢你的帮助!


问题答案:

对于问题2,我认为以下方法应该有效:

scope :without_a_dog include(:dog), where('dogs.id is null')

其中include应该执行左联接,这意味着在没有狗关系要联接到用户的情况下,dogs.id列应为null。



 类似资料:
  • 说我有这样的关系 那么,我是否可以说这种关系是一种关联,而不是聚合或组合。 我可以说狮子使用食物并像这样绘制UML图吗 此外,这种关系也没有多重性,因为Lion没有Food数组,食物也没有Lions数组作为实例变量。不同于复合和聚合,其中关系具有多重性。 如果我希望Food也能以同样的方式使用Lion呢。我在两个班级之间画两个箭头吗?

  • 好了,这里是第一次用到NutDao的关联关系了, 打开User类,加入2行 @One(target=UserProfile.class, field="id", key="userId") protected UserProfile profile; 自然的,为其添加Getter/Setter

  • class RelatedManager "关联管理器"是在一对多或者多对多的关联上下文中使用的管理器。它存在于下面两种情况: ForeignKey关系的“另一边”。像这样: from django.db import models class Reporter(models.Model): # ... pass class Article(models.Model):

  • 问题内容: 免责声明,我对Rails知之甚少。我会尽量简洁。考虑到Rails中的以下模型关系: 当调用ModelA控制器的show action时,返回的JSON应该显示所有ObjectA,这些ObjectAs是该ObjectB的子代的ObjectB的子代。 因此,如果我有一个包含ID 1、2和3的ObjectA的ObjectB,然后访问:/modela/1.json 我应该看到: 问题答案: 默

  • 关联实体和关联关系属性有什么区别?在我的一本名为《现代数据库管理》(Hoffer,第11版)的书中,作者陈述了两者之间的区别。然而,它并没有真正解释为什么会有差别,相反,它只是给出了它们是如何不同的例子。 据我所知,一个有一个属性关联的关系是一个关联关系属性,并用一条虚线表示一个圆角矩形,该矩形内有该属性。而关联实体是描述关系的多个属性。两者都只能用于ER图解中的多对多关系。我的思维过程正确吗?

  • 问题内容: 我试图使用Searchkick来基于多个模型运行搜索并返回。 我的书模型包含此 然后我的控制器有这个 我希望搜索结果搜索关联的模型并在那里返回任何结果-嘘主题名称,作者和发布者。 谢谢 问题答案: 在Book模型中,您需要为索引建立一个块。 这会将关联添加到您的索引中。 您将方法用于关联。