关联是has_and_belongs_to_many
,并在gem中定义。我需要知道何时添加一个新的,所以我可以告诉答案是after_add
回调,但我无法弄清楚如何在事后添加它。
我现在的代码不起作用:
(宝石中)
job.rb
module Spree
class Job < Spree::Base
has_and_belongs_to_many :users, join_table: 'spree_jobs_users', class_name: Spree.user_class.to_s
end
end
(我破码)
job_decorator.rb
Spree::Job.class_eval do
has_and_belongs_to_many :users, join_table: 'spree_jobs_users',
class_name: Spree.user_class.to_s, after_add: :test
def test
# after method
end
end
这有什么办法吗?或者我可以通过任何其他方式找出新工作的添加时间?
答案 0 :(得分:0)
如果您希望每次向handle()
表添加行时都运行一些代码,那么在我看来代码应该是连接表的责任,而不是spree_jobs_users
。我会将此重新设置为Spree::Job
关系,为您的连接表创建一个模型,并将您的代码放在该模型的has_many :through
挂钩中。
根据Rails文档,“最简单的经验法则是,如果您需要将关系模型作为独立实体使用,则应设置:after_create
关系。”