gpt4 book ai didi

ruby-on-rails - 修改继承的 Rails 关联

转载 作者:数据小太阳 更新时间:2023-10-29 08:10:47 24 4
gpt4 key购买 nike

我有一个继承自 Group 类的 Team 类。 Team 和 Groups 都通过同一个协会拥有成员(member)资格。但是,我需要在添加团队成员而不是组之后运行一个方法。我目前有这样的东西:

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

有没有什么方法可以修改 Team 中继承的关联,这样我就不必重新定义整个事物,而只需添加 :after_add Hook 即可?

如有任何帮助,我们将不胜感激。

最佳答案

试试这个,如果有效请告诉我。我应该这么想。确保您的 membership_check 方法不再是私有(private)的。

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

附言我不确定您需要将什么传递给 membership_check 参数,但添加的开发人员似乎有意义。

P.P.S 如果你想保持 membership_check 私有(private),你可以使用 gr.send(:membership_check, dev) 来绕过可见性约束。但我不明白你为什么要这么做。

关于ruby-on-rails - 修改继承的 Rails 关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3049504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com