Модели с несколькими принадлежащими и именами - PullRequest
0 голосов
/ 03 сентября 2011

Я создаю свою собственную маленькую систему задач в рельсах, но мне нужно некоторое руководство о том, как называть мои атрибуты, и если я думаю о правильном решении.

Итак, у меня есть модель задачи.

Задача может иметь 2 отношения с пользователем: создатель и пользователь, отвечающий за задачу.

Я могу, конечно, просто назвать свои атрибуты: creator: integer, а responseable: integer, но каков предпочтительный способ это сделать?

Должны ли они просто называться выше, или creator_user_id: integer, или я должен составить таблицу отношений с user_id и task_id, а затем ролью?

Спасибо новичку из Rails:)

1 Ответ

2 голосов
/ 03 сентября 2011

В вашей миграции вам понадобится следующее:

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 модели следующее:

In 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...