我有一个从组类继承的团队类。团队和组都通过同一个协会拥有成员资格。但是,我需要在添加了团队成员而不是组之后运行方法。我现在有这样的东西:
class Group < ActiveRecord::Base
has_many :memberships,
:class_name => 'Connection',
:foreign_key => 'connectable_id',
:as => :connectable,
:dependent => :destroy
end
class Team < Group
has_many :memberships,
:class_name => 'Connection',
:foreign_key => 'connectable_id',
:as => :connectable,
:dependent => :destroy,
:after_add => :membership_check
private
def membership_check(membership)
end
end
有没有什么方法可以修改团队中继承的关联,这样我就不必重新定义整个东西,而只需添加:after_add hook i t?
任何帮助都将不胜感激。
最佳答案
试试这个,如果有用的话告诉我。我应该这么想。确保您的membership_check
方法不再是私有的。
class Group < ActiveRecord::Base
has_many :memberships,
:class_name => 'Connection',
:foreign_key => 'connectable_id',
:as => :connectable,
:dependent => :destroy,
:after_add => proc {|gr, dev| gr.membership_check(dev) if gr.respond_to? :membership_check}
end
class Team < Group
def membership_check(membership)
end
end
另外,我不确定你需要把什么传递到成员资格检查的参数中,但是添加的开发人员似乎有意义。
p.p.s如果您想保持
membership_check
私有,可以使用gr.send(:membership_check,dev)绕过可见性约束。但我不明白你为什么要这么做。关于ruby-on-rails - 修改继承的Rails关联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3049504/