ActiveRecords [что-то] принадлежит_ к [пользователю] и has_many [пользователям] - PullRequest
1 голос
/ 26 февраля 2012

Я моделирую сценарий с Users и Tools, где Tool принадлежит одному User, но может использоваться многими Users, в том числе одному владельцу.

Я думал о добавлении owner_id столбца к Tools и произнесении этого has_many Пользователи или о добавлении новой таблицы отношений.

Я действительно новичок в Rails и у меня проблемы с настройкойПравильные ассоциации в моделях, хотя, может быть, вы можете указать мне правильное направление?

Большое спасибо.

Ответы [ 2 ]

3 голосов
/ 26 февраля 2012

Вы должны добавить owner_id к таблице Tools.Ассоциации будут такими.

class User < ActiveRecord::Base
  has_and_belongs_to_many :tools
end

class Tool < ActiveRecord::Base
  has_and_belongs_to_many :users
  belongs_to :owner, :class_name => 'User'
end

Вам понадобится таблица tools_users, чтобы использовать habtm-ассоциацию.Создайте миграцию и создайте таблицу с параметром id: false и двумя столбцами user_id и tool_id:

class CreateToolsUsersTable < ActiveRecordMigration
  def change
    create_table :tools_users, id: false do |t|
      t.integer :tool_id
      t.integer :user_id
    end
  end
end

После этого вы можете вызвать что-то вроде @user.tools или @user.owner Подробнее есть

0 голосов
/ 26 февраля 2012

У пользователя много инструментов. Инструмент принадлежит пользователю в владельце. У инструмента много пользователей.

- вот что я бы сделал.Я не уверен в формулировке, потому что я не использую Active Record, но именно так она работает в других формах

...