Rails 4在哪里和采取方法

时间:2016-07-17 00:26:38

标签: ruby-on-rails-4

这是购物车:

我有两个型号,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

1 个答案:

答案 0 :(得分:0)

我明白了。这很简单。

在PromoCode模型的update_promo_code方法中 改变了这个:
self.promo_rule _id = @promo_rule

到此:
self.promo_rule = @promo_rule