我如何限制有很多'日期返回的行条目?

时间:2015-08-24 17:35:55

标签: ruby-on-rails ruby

我有一个孩子的课程

class Child < BaseModel
  attr_protected

  has_many :child_parent_relationships, :dependent => :destroy
  has_many :child_daycare_relationships, :dependent => :destroy
  has_many :child_class_relationships, :dependent => :destroy

  has_many :parent_users, :through => :child_parent_relationships


  has_many :attendance_records

  has_many :moods
  has_many :behaviors

  validates :first_name, :presence => true


end

当我得到子Child.find(id)时,它返回所有has_many关系。我如何归还孩子,然后通过像日期这样的字段值来限制情绪表的关系?

2 个答案:

答案 0 :(得分:0)

只需附加您需要的条件。

Child.find(id).moods.where(field: "value")

答案 1 :(得分:0)

你可以通过几种方式做到这一点。

如果您有子变量

@child = Child.find(id)

您可以在Mood和Behaviors或where子句中添加范围。所以你要求像

这样的东西
@child.moods.where(field: "value")

class Behavior < ActiveRecord::Base

  scope :filtered, -> { where(field: "value") }

end

# Use scopes like so
@child.behaviors.filterd

要在范围内使用日期,它将是这样的

scope :on_date, -> (date) { where field: date }
scope :before_date, -> (date) { where("behaviors.field < ?", date) }

你也可以设置与prefilter有很多关系

class Child < ActiveRecord::Base

  has_many :specific_moods, -> { where(field: "value" }, class_name: "Mood"
  has_many :certain_behaviors, -> { where(field: "value" }, class_name: "Behavior"

end

然后你可以在你的观点中使用它:

@child.specific_moods
@child.certain_behaviors