2013-08-25 2 views
1

Я работаю над рельсами 4 приложения, и у меня есть две модели разработчиков и приложений. Разработчик может иметь множество приложений и относится ко многим приложениям. (Несколько разработчиков для приложения). Я успешно установил таблицу соединений, и все работает, но я хочу расширить ее, чтобы разработчик был либо основоположником, где у него может быть доступ к редактированию приложения или коллаборациониста, у которого есть доступ к просмотру приложение. Любые предложения по наилучшим возможностям заключались в достижении этой функциональности?Rails Model Setup Роли

App

has_and_belongs_to_many :collaborators, class_name: 'Developer', association_foreign_key: :collaborator_id 
    has_and_belongs_to_many :founders, class_name: 'Developer', association_foreign_key: :founder_id 

Разработчик

has_and_belongs_to_many :apps, foreign_key: 'collaborator_id' 
    has_and_belongs_to_many :apps, foreign_key: 'founder_id' 
+0

как вы определяли отношения на 'App' и' 'Developer' через has_many through' или' has_and_belongs_to_many'? – j03w

+0

@ j03w i обновил свой вопрос – ny95

+0

У вас есть 2 варианта 1. Создайте новую таблицу, подобную тому, что предложил @zolter, и используйте 'has_many through' вместо' hbtm', чтобы проверить некоторые методы 'edit' и' update' в вашем контроллере. 2. измените свой 'hbtm', чтобы стать подходящей таблицей модели: добавьте перемещение, чтобы создать столбцы с метками времени http://stackoverflow.com/questions/7542976/add-timestamps-to-an-existing-table и добавить столбец' role' к столу. Затем создайте файл 'model' в своих' моделях' – j03w

ответ

1

Я думаю, вам нужно создать еще одну таблицу:

def change 
    create_table :access_restricts do |t| 
     t.integer :user_id 
     t.integer :application_id 
     t.integer :role_id 

     t.timestamps 
    end 
    end 

пользователя и приложение будет иметь много assess_restricts.

0

Я бы предложил использовать однонаправленное наследование в этом случае.

STI

STI SAMPLE