Ruby on rails 3 当find()和#x27;正在删除父对象

Ruby on rails 3 当find()和#x27;正在删除父对象,ruby-on-rails-3,scope,has-many,named-scope,default-scope,Ruby On Rails 3,Scope,Has Many,Named Scope,Default Scope,我在用我的测验应用程序理解默认作用域和命名作用域方面有点困难。我在rails 3.0上 我有一个问题模型,有许多用户响应模型 问题包含问题文本和可能的答案ID用户响应将用户id与问题id和答案id联系起来 当我find()aQuestion显示给用户时,我不想也拉每一个UserResponse。默认情况下,我只想为当前用户id拉取UserResponse,看看他们是否已经回答了这个问题 如何在问题或用户响应上创建范围来完成此任务 不确定范围,但我会首先使用模型关系,比如下面的查询: (给定问题和

我在用我的测验应用程序理解默认作用域和命名作用域方面有点困难。我在rails 3.0上

我有一个
问题
模型,
有许多
用户响应
模型

问题
包含问题
文本
和可能的
答案ID
<代码>用户响应
用户id
问题id
答案id
联系起来

当我
find()
a
Question
显示给用户时,我不想也拉每一个
UserResponse
。默认情况下,我只想为当前
用户id
拉取
UserResponse
,看看他们是否已经回答了这个问题


如何在
问题
用户响应
上创建范围来完成此任务

不确定范围,但我会首先使用模型关系,比如下面的查询:

(给定问题和用户)

然后,一旦工作正常,我将进入范围(如果需要),并有:

用户模型上用于响应的范围

(Rails3 syntax)  scope :responses_by_user,  labmda { join(:responses) }
回答问题模型的范围

(Rails3 syntax)  scope :responses_by_question,  labmda { join(:responses) }  
注意:我更倾向于这些“连接”方法,因为它们只执行“内部”连接,即只返回存在响应记录的行。我这样做与类似于
lambda{where('user_id=?',user.id')的语法相反
然后你也可以把它们连在一起。差不多

Question.responses\u by\u Question(Question)。responses\u by\u user(user)`

不确定范围,但我会首先使用模型关系,比如以下查询:

(给定问题和用户)

然后,一旦工作正常,我将进入范围(如果需要),并有:

用户模型上用于响应的范围

(Rails3 syntax)  scope :responses_by_user,  labmda { join(:responses) }
回答问题模型的范围

(Rails3 syntax)  scope :responses_by_question,  labmda { join(:responses) }  
注意:我更倾向于这些“连接”方法,因为它们只执行“内部”连接,即只返回存在响应记录的行。我这样做与类似于
lambda{where('user_id=?',user.id')的语法相反
然后你也可以把它们连在一起。差不多
Question.responses\u by\u Question(问题)。responses\u by\u user(用户)`