Ruby on rails Rails\u admin有很多方法,但都是删除:通过modals
我有Ruby on rails Rails\u admin有很多方法,但都是删除:通过modals,ruby-on-rails,ruby-on-rails-4,has-many-through,rails-admin,Ruby On Rails,Ruby On Rails 4,Has Many Through,Rails Admin,我有活动,活动佣金,申请人和申请人佣金模式 campaign\u佣金是所有佣金都可用于活动,申请人\u佣金是这些佣金的申请人实例 当我删除申请者时,rails_admin还希望同时删除活动佣金和申请者佣金。我只希望销毁申请人的佣金 我如何指定这种情况发生 我的模型: 申请人.rb class Applicant < ActiveRecord::Base enum hired: [:pending, :declined, :awaiting_post, :accepted] at
活动
,活动佣金
,申请人
和申请人佣金
模式
campaign\u佣金
是所有佣金
都可用于活动
,申请人\u佣金
是这些佣金的申请人
实例
当我删除申请者时,rails_admin还希望同时删除活动佣金和申请者佣金。我只希望销毁申请人的佣金
我如何指定这种情况发生
我的模型:
申请人.rb
class Applicant < ActiveRecord::Base
enum hired: [:pending, :declined, :awaiting_post, :accepted]
attr_accessor :post_url
belongs_to :post
belongs_to :campaign
belongs_to :site
has_many :applicant_commissions
accepts_nested_attributes_for :applicant_commissions
has_many :campaign_commissions, through: :applicant_commissions
scope :accepted, -> { where('hired == ?', 3) }
scope :declined, -> { where('hired < ?', 1) }
scope :pending, -> { where('hired < ?', 0) }
scope :awaiting_post, -> { where('hired < ?', 2) }
validates :campaign_id, :presence => true
#validates :site_id, :presence => true
validates :applicant_commissions, :presence => true
validates :campaign_id, uniqueness: { scope: :site_id,
message: "We already have an application from you" }
class申请人{where('hired==?',3)}
范围:拒绝,->{where('hired<?',1)}
作用域:待定,->{where('hired<?',0)}
范围:待岗,->{where('hired<?',2)}
验证:campaign_id,:presence=>true
#验证:site_id,:presence=>true
验证:申请人佣金,:出席=>true
验证:活动\u id,唯一性:{scope::site\u id,
消息:“我们已经收到您的申请”}
申请人佣金.rb
class ApplicantCommission < ActiveRecord::Base
include ActionView::Helpers::NumberHelper
belongs_to :applicant
belongs_to :campaign_commission
has_many :invoice_parts
#delegate :user, to: applicant
end
class CampaignCommission < ActiveRecord::Base
belongs_to :campaign
belongs_to :commission
has_many :applicant_commissions
has_many :applicants, through: :applicant_commissions
end
class applicationcommission
竞选委员会
class ApplicantCommission < ActiveRecord::Base
include ActionView::Helpers::NumberHelper
belongs_to :applicant
belongs_to :campaign_commission
has_many :invoice_parts
#delegate :user, to: applicant
end
class CampaignCommission < ActiveRecord::Base
belongs_to :campaign
belongs_to :commission
has_many :applicant_commissions
has_many :applicants, through: :applicant_commissions
end
class
campaign.rb(不涉及问题,但为上下文添加)
class活动{:default=>“500x500>”,:thumb=>“100x100>”},:default\u url=>“/images/:style/missing.png”
验证\u附件\u内容\u类型:图像,:内容\u类型=>/\Aimage\/.\Z/
属于:计划
属于:用户
你有很多申请者吗
有很多:竞选委员会
有很多:佣金,通过::活动佣金
有很多:图像,如::imageable
范围:前,->{limit(4)}
结束
申请人佣金通过此关系与活动佣金达成一致
has_many :campaign_commissions, through: :applicant_commissions
我建议这样做是为了解决你提出的问题
has_many :campaign_commissions
而且,我没有在您的示例模型中看到这一点,但是为了答案的完整性,我将在这里包括它。如果不包括销毁属性,则不会删除依赖记录(或关联依赖记录)
has_many :applicant_commissions, :dependent => :destroy
我不认为您可以通过两种方式拥有“多通”关系,因为在应用程序运行期间处于活动状态,但当您想要删除父记录时,可以挂起该关系。但也许有人会给出一个答案和一个方法