Как настроить эти действия контроллера CRUD для has_many_polymorphs и ошибки - PullRequest
0 голосов
/ 24 апреля 2011

Я использую плагин has_many_polymorphs , чтобы видео, темы и пользователи могли публиковаться в профилях. Следовательно, в профиле есть много «showable_objects», которые могут быть видео, темами и пользователями. Кроме того, пользователь, который создает «showable_object», также будет связан с ним. Я уже настроил ассоциации моделей (ниже).

Я хочу, чтобы объект showable_object создавался для того, чтобы пользователь выбирал другого пользователя из поля автозаполнения на странице показа ресурса. Затем этот ресурс связывается с профилем выбранного пользователя.

Мой вопрос: как мне настроить мой контроллер showable_objects? Кроме того, если я хочу, чтобы он был отправлен через AJAX, как будет выглядеть запрос AJAX jQuery?

UPDATE:

Вот мои модельные ассоциации:

class ShowableObject < ActiveRecord::Base
  belongs_to :showable_object, :polymorphic => true
  belongs_to :user
  belongs_to :profile
end

class Profile < ActiveRecord::Base
  has_many_polymorphs :showable_objects, :from => [:videos, :users, :topics, :video_votes],
                                         :dependent => :destroy
end

class User < ActiveRecord::Base
  has_many_polymorphs :showable_objects, :from => [:videos, :users, :topics, :video_votes],
                                         :dependent => :destroy
end

Это моя миграция ShowableObject:

class CreateShowableObjects < ActiveRecord::Migration
  def self.up
    create_table :showable_objects do |t|
      t.references :showable_object, :polymorphic => true
      t.references :profile
      t.references :user

      t.timestamps
    end
  end

  def self.down
    drop_table :showable_objects
  end
end

Кстати, я также получаю эту ошибку от этих ассоциаций (так что на самом деле это вопрос из двух частей: P):

ActiveRecord::Associations::PolymorphicError in Videos#index

Showing /rubyprograms/dreamstill/app/views/videos/_video.html.erb where line #24 raised:

Could not find a valid class for :showable_objects_users (tried ShowableObjectsUser). If it's namespaced, be sure to specify it as :"module/showable_objects_users" instead.

Он указывает на эту строку <% if video.owned_by? current_user %> и имеет отношение к вызову has_many_polymorphs в пользовательской модели.

1 Ответ

0 голосов
/ 16 июня 2011

Я никогда не использовал его, просто сейчас проводил некоторые исследования, но я заметил, что вы пометили свой вопрос rails-3, и, насколько я понимаю, has_many_polymorphs не работает с ним. Я нашел следующий форк, который может помочь с ошибкой: has_many_polymorphs от jystewart для рельсов 3 .

...