2012-05-24 3 views
1

У меня есть пользователи и проекты. У пользователя может быть много проектов, и у проекта может быть много пользователей. Теперь у проекта есть определенный пользователь как автор или создатель, т. Е. у проекта есть один создатель, и создатель также является пользователем. Как сопоставить это отношение в рельсах !!!Ruby on the rails relations

ответ

0
#Project 
has_and_belongs_to_many :users 
belongs_to :author, :class_name => "User" 

#User 
has_and_belongs_to_many :projects 
has_many :authored_projects, :class_name => "Project", :foreign_key => "author_id" 

И вы должны добавить author_id в таблицу проектов.

Таким образом, вы можете использовать: project.author, user.authored_projects и т.д.

+0

Спасибо, работал идеально в соответствии с требованием. – roxxypoxxy

+0

Что делать, если я хочу сделать, например project = User.last.projects.create (params [: projects]), в настоящее время эти значения не настроены в таблице соединений, т.е. Я не могу получить project.users, выполнив project = User.last.projects.create (params [: projects]) – roxxypoxxy

+0

@roxxypoxxy, странно, но он должен работать: http://guides.rubyonrails.org/association_basics .html # has_and_belongs_to_many-association-reference посмотреть 4.4.1.15. Новая запись должна быть создана в таблице ProjectUsers. –

0

Попробуйте

class User < ActiveRecord::Base 
has_and_belongs_to_many :projects 
has_many :created_projects, :class_name => "Project", :foreign_key => "creator_id"  
end 



class Project< ActiveRecord::Base 
has_and_belongs_to_many :users 
belongs_to :creator, :class_name => "User" 
end 
+0

Я думаю, что вам не нужно указывать 'foreign_key' в' Project', это необязательно: http://stackoverflow.com/questions/9555984/rails-foreign-key-column-name-convention-for-a-unary -many-many-relationship. Также необходимо установить связь между создателем и его проектами. –

+0

да thats true @MikhailD ... спасибо –

+0

спасибо guyz за быстрый ответ !! – roxxypoxxy