Я бы сделал что-то вроде этого:
#reviewer.rb the user who reviews your versions
class Reviewer < ActiveRecord::Base
has_many :reviews
end
#review.rb the actual review
class Review < ActiveRecord::Base
belongs_to :reviewer
belongs_to :version
#usually put here a field called comment:string
end
class Version < ActiveRecord::Base
has_many :reviews
has_many :reviewers, :through => :reviews, :uniq=>true #this will give you the list of reviewers
belongs_to :submission
end
class Submission < ActiveRecord::Base
has_many :versions
end
Дайте мне знать, если вам нужны какие-либо разъяснения.
Обновите
Во многих случаяхВаш рецензент может быть моделью пользователя, поэтому вместо рецензента вы можете использовать модель пользователя, а затем правильно назвать ее, чтобы сохранить значение отношений.Эти изменения необходимы.
class User < ActiveRecord::Base
has_many :reviews
end
class Review < ActiveRecord::Base
belongs_to :reviewer, :class_name=>'User'
belongs_to :version
#usually put here a field called comment:string
end
Затем, согласно предложению @Andy Waite, используйте гем devise
для аутентификации ваших пользователей.