这是购物车:
我有两个型号,PromoCode和PromoRule。
在PromoCode模型中,我想搜索所有PromoRule记录,如果PromoCode模型中的promo_code属性与PromoRule记录之一匹配,我想将PromoRule分配给PromoCode。
我试图找到匹配的PromoRule:
@promo_rule = PromoRule.where(["rule_code = ?", self.promo_code]).take
然后将promo_rule id分配给promo_code执行此操作:
self.promo_rule_id = @promo_rule
这也不起作用:
self.promo_rule_id = @promo_rule
当我输入促销代码并提交时,它会更新PromoCode。那时,update_promo_code方法被执行。我没有收到任何错误,但促销规则ID与促销代码无关。 有什么建议吗?
promo_code.rb
class PromoCode < ActiveRecord::Base
belongs_to :order
belongs_to :promo_rule
before_update :update_promo_code
def update_promo_code
if self.promo_code.present?
@promo_rule = PromoRule.where(["rule_code = ?", self.promo_code]).take
self.promo_rule_id = @promo_rule
self.apply_promo = true
end
end
end
promo_rule.rb
class PromoRule < ActiveRecord::Base
has_many :promo_codes
end
答案 0 :(得分:0)
我明白了。这很简单。
在PromoCode模型的update_promo_code方法中
改变了这个:
self.promo_rule _id = @promo_rule
到此:
self.promo_rule = @promo_rule