Dam*_*tal 2 ruby mysql ruby-on-rails foreign-keys
我正在开发我的第一个真正的rails项目,我正在寻找一些专业建议.
我期待在MySQL数据库中有四个表(用户,书籍,评论,标签),并适用以下业务规则.
用户可以为一本书制作一个或多个评论,但评论只能属于一本书.用户可以针对书籍放置一个或多个标签,但标签只能属于一本书.
从图形上看,我提到了以下内容:( ascii art永远不会死)
+---------+ +---------+
| | | |
| | | |
| User |1 1| Book |
| |----- -----| |
+---------+ | | +---------+
| 1 | | | 1
| | | |
| | | |
| 1,* | | | 1,*
+---------+ | | 1,*+---------+
| | ---+----| |
| |1,* | | |
| Comment |--------- | Tag |
| | | |
+---------+ +---------+
Run Code Online (Sandbox Code Playgroud)
我正在寻找有关如何在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
Run Code Online (Sandbox Code Playgroud)
我相信这将有助于在标签和评论表中强制执行外键字段(User_id和Books_id) - 这最终是我需要做的.我希望这将允许我将标签和评论关联到用户和书籍,即books.tags或users.tags.
它是否正确?
只要在db和rails中强制执行外键,我很乐意彻底改变设计.
干杯,
达摩
这不会强制执行db中的外键,它们只是整数列.他们只协助模型层.t.references
也没有帮助.要强制使用外键,您需要手动创建它们.我通常在迁移方法(up
或down
)中做这样的事情:
execute <<-SQL
ALTER TABLE <table_name>
ADD CONSTRAINT fk_name
FOREIGN KEY (column_name)
REFERENCES table_name(id)
SQL
Run Code Online (Sandbox Code Playgroud)
这将在db上创建和强制执行外键.
归档时间: |
|
查看次数: |
2039 次 |
最近记录: |