Я в рельсах 3.1.У меня есть следующие модели
class Tool < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :tool
has_many :relationships
has_many :advantages, :through => :relationships, :source => :resource, :source_type => 'Advantage'
has_many :disadvantages, :through => :relationships, :source => :resource, :source_type => 'Disadvantage'
end
class Relationship < ActiveRecord::Base
belongs_to :comment
belongs_to :resource, :polymorphic => true
end
class Disadvantage < ActiveRecord::Base
has_many :relationships, :as => :resource
has_many :comments, :through => :relationships
end
class Advantage < ActiveRecord::Base
has_many :relationships, :as => :resource
has_many :comments, :through => :relationships
end
Короче говоря, A Tool
имеет много comments
.Comment
inturn связан с Advantages
и Disadvantages
.Поэтому на моей странице tool/show
я бы перечислил все комментарии.
Но если бы мне пришлось добавить комментарий на страницу инструмента, была бы форма с текстовой областью для комментария и двумя multi select list boxes
для преимуществ и недостатков.
И здесь есть одна загвоздка, если пользователь хочет выбрать из существующего adv / disadv, пользователь может выбрать из списка или, если пользователь хочет добавить новый adv / disadv, онможете набрать его и добавить его, чтобы он был сохранен через вызов ajax и новый adv / disadv добавлен в список.Как я должен это сделать?