如何解决如何从2个表中获取数据?
| 我想得到尚未回答任何问题的ѭ0人。我该如何完成? 以下是我的模型及其相互之间的关系。 答案模型(字段:id,question_id,text):class Answer < ActiveRecord::Base
belongs_to :inquiry
belongs_to :question
has_one :respondent,:through => :inquiry
validates_uniqueness_of :inquiry_id
validates_presence_of :text
end
受访者模型(字段:ID,电子邮件,user_id):
class Respondent < ActiveRecord::Base
has_many :inquiries,:dependent => :destroy
has_many :questions,:through => :inquiries
belongs_to :user
validates_uniqueness_of :email
validates_presence_of :email
end
查询模型(字段:id,question_id,responent_id):
class Inquiry < ActiveRecord::Base
belongs_to :question
belongs_to :respondent
has_one :answer,:dependent => :destroy
问题模型(字段:ID,文本):
class Question < ActiveRecord::Base
has_many :inquiries,:dependent => :destroy
has_many :answers,:through => :inquiries,:dependent => :destroy
belongs_to :user
end
解决方法
根据您需要此数据的上下文,并假设您没有太多的受访者和问题,您可以执行以下操作。假设您有一个名为Answer的方法?在问题模型中,如果回答了问题,则返回true。
respondents = []
Respondent.all.each do |respondent|
total_questions = respondent.questions.count
answered_questions = 0
unless total_questions < 1
respondent.questions.each do |q|
q.answered? ? answered_questions++ : nil
end
end
if answered_questions == 0
respondents << respondent
end
end
最后,您剩下了一系列响应对象,这意味着您可以对其进行迭代以获取ID。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。