首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby on Rails:如何查找具有包含特定值的散列的所有项

Ruby on Rails:如何查找具有包含特定值的散列的所有项
EN

Stack Overflow用户
提问于 2010-04-26 06:03:38
回答 1查看 2.2K关注 0票数 2

假设我有三个模型:StudentSchoolClassDayOfWeekStudentSchoolClassSchoolClassDayOfWeek之间存在HABTM关系。我想要做的是找出属于某个给定学生的所有学校班级,这些班级在周一相遇。

现在我想我可以这样做:

代码语言:javascript
复制
@student = Student.find(:student_id)
@student_classes = @student.school_classes.find(:all)
@student_classes_on_monday = Array.new
@student_classes.each do |student_class|
  if student_class.day_of_week.include?("Monday")
    @student_classes_on_monday << student_class 
  end
end

有没有办法在单个find方法中完成第2-8行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-26 06:07:38

看起来您想要使用select:

代码语言:javascript
复制
@student_classes_on_monday = @student_classes.select do |student_class|
  student_class.day_of_the_week.include? "Monday"
end

Select将返回块为true的所有元素。因此,您只需将条件作为块传递,并返回满足条件的项。

您还可以在数据库查询中使用'like‘关键字来尝试匹配这一点。我不能肯定你的模式是什么样的,但像这样的东西可以让你开始:

代码语言:javascript
复制
@student.school_classes.find(:all, :conditions => ['day_of_week LIKE ?', '%Monday%'])

我自己对这个语法有点生疏,所以我从这里拉出这个例子(因此不能保证它是完全正确的):http://railsruby.blogspot.com/2006/08/like-as-condition-to-get-records.html

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2710158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档