我已经完成了O'Really的Rails 3学习,现在是时候在真实项目上实验知识了,我将部署到Red Hat的OpenShift平台。 通过我的笔记本电脑代码项目文件夹搜索,我找到了一个简单的TODO任务管理器,我用C ++编写了一次。因此,将该项目恢复生机是一个好主意,这次是作为Rails中的Web任务管理服务,允许使用OmniAuth进行身份验证。
最初的C ++项目是按照OOP的观点进行规划的。您可以使用其当前ID号,文本字符串,日期和时间创建“任务”对象。 任务的每个部分都是作为一个不同的C ++类。 Eash one在构造函数上进行了验证。 然后将任务保存到sqlite或将它们导出为纯文本,您可以在应用程序上共享或再次阅读。
所以,回到商业,我正在尝试使用MVC将这个小应用程序调整为更复杂的Rails。
我考虑添加一个Scaffolding,它将表单填充到任务的文本字段并将其传递给Controller。 控制器将设置当前日期和时间,并且在保存到DB时默认设置ID。 验证应该在模型上进行,我将创建一个迁移以在该字段上构建表。 由于我将使用OmniAuth添加多用户支持,(因此每个用户都可以保存自己的任务),我应该使用用户信息创建一个新的数据库表。
但是我应该为每个用户创建一个新的任务表,然后将它们映射到users表吗? 或者只创建一个任务表并将每个用户的任务放在那里然后映射到那里?
我无法确定将用户任务保存到数据库的好处。
有什么想法吗?
提前致谢
答案 0 :(得分:1)
这假设用户可以有许多任务,但一个任务只能属于一个用户。
您将拥有一个tasks
表,并将所有用户的任务放在那里。
您希望在user_id
表格(tasks
)中添加rails g migration add_user_id_to_tasks user_id:integer
列,并将以下内容添加到模型中 -
class Task < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :tasks
end
答案 1 :(得分:0)
您的模型将如下所示:
class User < ActiveRecord::Base
has_many :tasks
end
class Task < ActiveRecord::Base
belongs_to :user
end
您的表格将如下所示(伪ad-hoc-notation):
Users table => id:integer, name:String
Tasks table => id:integer, task:Text, user_id:integer
这有帮助吗?