假设我有三个模型:Student、SchoolClass和DayOfWeek。Student与SchoolClass、SchoolClass与DayOfWeek之间存在HABTM关系。我想要做的是找出属于某个给定学生的所有学校班级,这些班级在周一相遇。
现在我想我可以这样做:
@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行?
发布于 2010-04-26 06:07:38
看起来您想要使用select:
@student_classes_on_monday = @student_classes.select do |student_class|
student_class.day_of_the_week.include? "Monday"
endSelect将返回块为true的所有元素。因此,您只需将条件作为块传递,并返回满足条件的项。
您还可以在数据库查询中使用'like‘关键字来尝试匹配这一点。我不能肯定你的模式是什么样的,但像这样的东西可以让你开始:
@student.school_classes.find(:all, :conditions => ['day_of_week LIKE ?', '%Monday%'])我自己对这个语法有点生疏,所以我从这里拉出这个例子(因此不能保证它是完全正确的):http://railsruby.blogspot.com/2006/08/like-as-condition-to-get-records.html
https://stackoverflow.com/questions/2710158
复制相似问题