<分区> 分区>
我正在从事我的第一个真正的 Rails 项目,正在寻求一些专业建议。
我希望在我的 MySQL 数据库中有四个表(用户、图书、评论、标签)并且应用以下业务规则。
一个用户可以对一本书发表一条或多条评论,但一条评论只能属于一本书。 用户可以在一本书上放置一个或多个标签,但标签只能属于一本书。
在图形上,我想到了以下内容:(ascii 艺术永远不会消亡)
+---------+ +---------+
| | | |
| | | |
| User |1 1| Book |
| |----- -----| |
+---------+ | | +---------+
| 1 | | | 1
| | | |
| | | |
| 1,* | | | 1,*
+---------+ | | 1,*+---------+
| | ---+----| |
| |1,* | | |
| Comment |--------- | Tag |
| | | |
+---------+ +---------+
我正在寻找有关如何在 Rails 中配置我的模型的任何建议。目前我正在寻找设置:
class Users
has_many :tags
has_many :comments
has_many :tagsBooks, :through=>tags, :class_name => "tags_books"
has_many :commentsBooks, :through=>comments, :class_name => "comments_books"
end
class Books
has_many :tags
has_many :comments
has_many :tagsUsers, :through=>tags, :class_name => "tags_users"
has_many :commentsUsers, :through=>comments, :class_name => "comments_users"
end
class Tags
belongs_top :users
belongs_to :books
end
class Comments
belongs_top :users
belongs_to :books
end
我“相信”这将有助于在标签和评论表中强制执行外键字段(User_id 和 Books_id)——这最终是我需要做的。我希望这将使我能够将标签和评论关联到用户和书籍中的任何一个/两者,即 books.tags 或 users.tags。
这是正确的吗?
只要在数据库和 rails 中强制执行外键,我很乐意完全改变设计。
干杯,
达摩