Рельсы, путаница по полиморфным ассоциациям - PullRequest
1 голос
/ 25 сентября 2010

Я немного сбит с толку и не могу найти нужный ресурс или информацию в Интернете.

Я создаю модель комментариев, в которой можно прокомментировать любую модель, вот что яdid:

class Comment < ActiveRecord::Base
  belongs_to :commentable, :polymorphic => true
  belongs_to :user
end

Таким образом, в комментарии дополнительно есть столбцы commentable_type и commentable_id,

class Thing < ActiveRecord::Base
  has_many :comments, :as => :commentable
end

Форма и все отображаются и работают нормально, а запись сохраняет, кромедля столбцов commentable_type и commentable_id я не понимаю, чего мне здесь не хватает.

Ответы [ 2 ]

1 голос
/ 25 сентября 2010

Этот вопрос поможет вам обойти полиморфные ассоциации также взгляните на комментарии, которые помогут вам решить проблемы во взглядах

Это то, что я ответил на это, а такжепредлагаю вам сделать то же самое.Поскольку вы создали полиморфную ассоциацию в своей модели, вам больше не нужно беспокоиться об этом в представлении.Вам просто нужно сделать это в вашем контроллере комментариев.

@movie = Movie.find(id) # Find the movie with which you want to associate the comment
@comment = @movie.comments.create(:text => "This is a comment") # you can also use build
# instead of create like @comment = @movie.comments.build(:text => "This is a comment")
# and then @comment.save
# The above line will build your new comment through the movie which you will be having in
# @movie.
# Also this line will automatically save fill the commentable_id as the id of movie and 
# the commentable_type as Movie.
1 голос
/ 25 сентября 2010

Что происходит, когда вы выполняете это в консоли?

c = Comment.create
t = Thing.create
c.commentable = t
c.save!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...