ассоциация полиморфных рельсов терпит неудачу на унаследованном классе? - PullRequest
0 голосов
/ 23 января 2011

У меня проблемы с выполнением обратной полиморфной ассоциации, когда у меня есть унаследованный класс.Кто-нибудь знает, что происходит?

ruby-1.9.2-rc2 > Label.first
 => #<Label id: 1, owner_id: 1, owner_type: "Student", name: "Lorem", created_at: "2011-01-23 05:02:29", updated_at: "2011-01-23 05:02:29"> 
ruby-1.9.2-rc2 > Label.first.owner
 => #<Student id: 1, email: "alice1@example.com", ...,  avatar_updated_at: nil> 
ruby-1.9.2-rc2 > Label.first.owner.labels
 => [] 

class Student < User
  has_many :labels, :as => :owner


class Label < ActiveRecord::Base
  belongs_to :owner, :polymorphic => true

Примечание: просто для хорошей меры (не то, что это должно быть иначе, но на всякий случай ...)

User.find(1).labels
 => [] 

Также

l = Label.find(4)
 => #<Label id: 4, owner_id: 2, owner_type: "Student", name: "sit", created_at: "2011-01-23 05:02:29", updated_at: "2011-01-23 05:02:29"> 
ruby-1.9.2-rc2 > l.owner_type = "User"
 => "User" 
ruby-1.9.2-rc2 > l.save
 => true 
ruby-1.9.2-rc2 > Student.find(2).labels
 => [#<Label id: 4, owner_id: 2, owner_type: "User", name: "sit", created_at: "2011-01-23 05:02:29", updated_at: "2011-01-23 07:13:37">] 

1 Ответ

0 голосов
/ 23 января 2011

До сих пор не уверен, почему это не удалось (ну, я могу догадаться, учитывая дихотомию Студент / Пользователь), но для дальнейшего использования этот хак работает:

has_many :labels, :conditions => ["owner_type = ?", "Student"], 
                          :foreign_key => "owner_id"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...