我正在为存储应用程序的数据结构而苦苦挣扎。考虑与不使用公共库技术的私有库相当的问题。
我需要跟踪这本书,以便我知道,如果它被存储,它存储在哪里,如果它被检出,谁拥有它以及在返回时如何处理它。我怎么看它如下:
Book
has_one :location
has_one :patron, through: :location, source: :library, source_type: 'Patron'
has_one :row, through: :location, source: :library, source_type: 'Row'
Location
belongs_to :book
belongs_to :library, polymorphic: true
Patron
has_many :locations, as: :library
has_many :books, through: :locations
Row
has_many :locations, as: :library
has_many :books, through: :locations
我已经构建了这个结构,只是我有一些has_many / belongs_to关系向后转,这导致我的嵌套表单失败。我想确保这次我做对了。就这一点而言,这对我来说似乎没问题。是吗?
但是,它只能归结为行,我需要识别行内的货架。我有点失去了如何构建数据结构。我认为与位置的货架关系必须是多态的,但行和货架关系可以是直接的。那有意义吗? 我不确定它是否正确,因为位置似乎是一个架子,而不是一排架子。我正在查看以下内容:
Book
has_one :location
has_one :patron, through: :location, source: :library, source_type: 'Patron'
has_one :shelf, through: :location, source: :library, source_type: 'Shelf'
Location
belongs_to :book
belongs_to :library, polymorphic: true
Patron
has_many :locations, as: :library
has_many :books, through: :locations
Shelf
has_many :locations, as: :library
has_many :books, through: :locations
belongs_to :row
Row
has_many :shelves
感谢您的帮助。
答案 0 :(得分:0)
问题中提出的解决方案按设计工作。关于外部多态列的排序存在问题,例如按位置对书籍进行排序,但这似乎只是预期的结果。如果您有兴趣,请参阅24001705的问题和答案。