我有一个孩子的课程
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关系。我如何归还孩子,然后通过像日期这样的字段值来限制情绪表的关系?
答案 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