【发布时间】:2016-05-10 20:29:56
【问题描述】:
我有两个模型,它们都具有has_and_belongs_to_many 关联。
订购
class Order < ApplicationRecord
# Has multiple related rates.
has_and_belongs_to_many :rates
评分
class Rate < ApplicationRecord
has_and_belongs_to_many :orders
Rate 包含给定日期的货币数据,而 order 包含截止日期。我有一份工作,给定订单的截止日期,创建并获取 (today..deadline) - 1 年之间的所有日期。
工作
def perform(order_record)
(all_dates << history_weeks).flatten!
all_dates.each do |date|
r = Rate.find_by(date: date)
if r == nil
r = Rate.new(date: date)
r.save
end
q = r.update(orders << order_record)
end
现在的问题是,对于我创建的第一个订单,一切运行顺利,关联正确,因此我可以通过 @order.rates 访问费率。尽管记录了以下内容,但我创建的第二个和每个下一个订单都不会这样做,但只有一次:
Rate Load (0.0ms) SELECT "rates".* FROM "rates" INNER JOIN "orders_rates" ON "rates"."id" = "orders_rates"."rate_id" WHERE "orders_rates"."order_id" = ? ORDER BY "rates"."id" ASC LIMIT ? [["order_id", 4], ["LIMIT", 1]]
我做错了什么?
编辑:
作业在orders_controller中被调用:
def create
@order = Order.new(order_params)
@order.user = User.find(current_user)
respond_to do |format|
if @order.save
GetCurrencyHistoryJob.perform_now(@order)
format.html { redirect_to @order, notice: 'Order was successfully created.' }
format.json { render :show, status: :created, location: @order }
else
format.html { render :new }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
【问题讨论】:
-
你能把代码贴在你调用工作的地方吗
标签: ruby-on-rails