0
У меня есть несколько классов в Rails 2 приложение: a Group
есть некоторые group_items
. Каждый group_item
имеет полиморфный ìtem
: user
или contact
.Переопределение has_many << функция
class Group < AR::Base
has_many :group_items
has_many :users, :through => :group_items
has_many :contacts, :through => :group_items
end
class GroupItem < Ar::Base
belongs_to :group
belongs_to :item, :polymorphic => true
belongs_to :users :conditions =>
[ "#{GroupItem.table_name}.item_type = ? ", User.to_s ],
:foreign_key => 'item_id'
belongs_to :contacts :conditions =>
[ "#{GroupItem.table_name}.item_type = ? ", Contact.to_s ],
:foreign_key => 'item_id'
validates_presence_of :group_id, :item_id, :item_type
end
Все работает отлично. Но я был бы в состоянии использовать эти функции:
@my_group.users << @my_user
@my_group.contacts << @my_contact
Ассоциация кажется слишком сложным, чтобы сделать это:
ActiveRecord::RecordInvalid for GroupItem: item_type must be filled
Есть ли способ, чтобы использовать эту функцию, как переопределить функцию Group
users<<
?
С уважением
чувствует себя неловко мне: если деталь не проходит проверку, вы даже не можете получить доступ к нему, чтобы увидеть ошибки – apneadiving
@ apneadiving. Это просто одно и то же поведение, чем исходный '<<', который возвращает 'false', когда элемент не может быть вставлен. – pierallard