Ruby on rails 覆盖有许多<&书信电报;功能

Ruby on rails 覆盖有许多<&书信电报;功能,ruby-on-rails,polymorphic-associations,ruby-on-rails-2,model-associations,Ruby On Rails,Polymorphic Associations,Ruby On Rails 2,Model Associations,我在rails2应用程序中有一些类:aGroup有一些Group\u项目。每个组项目都有一个多态的项目:用户或联系人 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 belo

我在rails2应用程序中有一些类:a
Group
有一些
Group\u项目
。每个
组项目
都有一个多态的
项目
用户
联系人

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

有没有什么方法可以使用这个函数,比如覆盖
用户我发现了一个漂亮的解决方案,使用关联扩展

has_many :users, :through => :group_items do
  def <<(user)
    group_item = proxy_owner.group_items.create({ :item => user })
    return false if !group_item.valid?
    return proxy_target
  end
end
有许多:用户,:通过=>:组项目

def我找到了一个漂亮的解决方案,使用了关联扩展

has_many :users, :through => :group_items do
  def <<(user)
    group_item = proxy_owner.group_items.create({ :item => user })
    return false if !group_item.valid?
    return proxy_target
  end
end
有许多:用户,:通过=>:组项目

def让我觉得很尴尬:如果项目未通过验证,您甚至无法访问它以查看errors@apneadiving我只是觉得拥有与原始
相同的行为很尴尬:如果项目未通过验证,您甚至无法访问它以查看结果errors@apneadiving它只是要有与原来的

has_many :users, :through => :group_items do
  def <<(user)
    group_item = proxy_owner.group_items.create({ :item => user })
    return false if !group_item.valid?
    return proxy_target
  end
end