我正在使用rails创建自己的小任务系统,但是我需要一些关于如何调用我的属性的指导,以及我是否正在考虑正确的解决方案。
所以我有一个任务模型。
任务可以与用户有2个关系:创建者和负责该任务的用户。
我当然可以调用我的属性:creator:integer,和Responsable:integer,但是这样做的首选rails方式是什么?
它们应该只调用上面的,还是createor_user_id:integer,还是应该用user_id和task_id创建一个关系表,然后是角色?
感谢Rails新手:)
答案 0 :(得分:2)
在迁移中,您需要以下内容:
class CreateTasks < ActiveRecord::Migration
def change
create_table :tasks do |t|
t.references :creator
t.references :responsible
t.timestamps
end
add_index :tasks, :creator_id
add_index :tasks, :responsible_id
end
end
这是由rails g model task creator:references responsible:references
在您的数据库中,这将创建一个包含两列的tasks
表:creator_id
和responsible_id
。默认情况下,Rails会认为这些列引用了两个ActiveRecord模型Creator
和Responsible
。但是,正如您希望这些引用User
模型一样,您需要将以下内容添加到Task
模型中:
在app/models/tasks.rb
class Tasks < ActiveRecord::Base
belongs_to :creator, :class_name => 'User'
belongs_to :responsible, :class_name => 'User'
end
这将告诉Rails使用User
模型来实现这些关系。因此,当您执行类似task.creator
之类的操作时,您将获得User
模型,task.responsible
也是如此。