Ken*_* I. 23 ruby ruby-on-rails ruby-on-rails-3
我是rails(通常是一个python人)的新手,并且刚刚尝试构建一个简单的任务管理器应用程序以获得乐趣.我正在使用Devise进行身份验证,并且我正在尝试与用户关联的单个Task对象.我在Task模型中添加了以下内容:
class Task < ActiveRecord::Base
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
我在Devise的用户模型中添加了以下内容:
class User < ActiveRecord::Base
has_many :tasks
<<normal Devise stuff>>
end
Run Code Online (Sandbox Code Playgroud)
每当我添加这些信息时,我就会运行:rake db:migrate.然后它给了我一个错误,当我尝试用它做任何事情时,user_id的数据库字段不存在.
我确信这是一件相当简单的事情.谢谢您的帮助.
Dav*_*ulc 39
向belongs_to模型添加(或任何其他)关系仅告知活动记录模型是逻辑链接的.这使您可以访问类似的方法task.user.为了实现这一点,必须通过数据库字段链接实例.
这是您缺少的步骤:您需要创建一个迁移,该列将向Task表添加一个列,指示它属于哪个用户.
rails g migration AddUserIdToTasks user_id:integer
Run Code Online (Sandbox Code Playgroud)
注意AddUserIdToTasks可以是您想要的任何名称.没什么区别.然后db/migrations/add_user_to_tasks,您可以打开并查看其功能.通常self.up会修改数据库的方式,而self.down会反过来(因此,在这种情况下,删除used_id).
然后实际执行SQL命令以更改数据库表和模式,运行
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
您需要先生成迁移以添加外键:
rails g migration AddUserIdToTasks user_id:integer
Run Code Online (Sandbox Code Playgroud)
然后跑 db:migrate
如果您希望用户能够引用该关联user.dreams,则需要添加:class_name => 'Task'到User模型中的has_many行.
| 归档时间: |
|
| 查看次数: |
11310 次 |
| 最近记录: |