【发布时间】:2019-06-28 10:34:54
【问题描述】:
class Person < ActiveRecord::Base
belongs_to :parent, class_name: 'Person'
has_many :children, class_name: 'Person', foreign_key: :parent_id
has_many :grandchildren, class_name: 'Person', through: :children, source: :children
end
我希望这个模型以这种方式工作(不管如何):
grandfather = Person.create(name: "Grandfather")
father = Person.create(name: "Father", parent: grandfather)
son = Person.create(name: "Son", parent: father)
grandfather.children.map(&:name)
=> ['father']
grandfather.grandchildren.map(&:name)
=> ['Son']
所以想法是让孩子的名字小写。我可以使用回调或覆盖 name 属性的 getter,但这适用于子孙,所以这不是重点。
【问题讨论】:
-
首先,为什么不在你需要的地方明确地小写名称呢?好像是XY problem。
-
@OleksiiFilonenko 我正在学习 Rails,它是练习的一部分,所以它不需要任何意义。
标签: ruby-on-rails ruby activerecord ruby-on-rails-5