如何在我的控制器中定义在URL中提取类时运行并执行以下操作;
我需要找到current_user的所有“工作”我猜这样的事情;
@joblisting = current_user.Joblisting.find(params[:id])
然后我需要接受这些工作并检查他们的专栏“job_status”中是否有“已完成”的文字或其他“
如果jobs_status已“完成”,那么我需要运行代码,以便我执行“if”
我必须通过计算。
@joblisting = current_user.Joblisting.find(params[:id])
if @joblisting.where(:project_status => "completed")
number_to_currency(current_user.Joblisting.where(:project_status => 'completed').sum('jobprice') * 1.60 - current_user.Joblisting.where(:project_status => 'completed').sum('jobprice'))
Notifier.notify_payout(current_user).deliver
@joblisting.project_status = 'paid'
@joblisting.save
end
这就是我所拥有的,我坚持将计算传递给Notifier.notify_payout模板。
我确信谁比我更了解铁轨,马上就会看到我的错误。
答案 0 :(得分:0)
我的回答不会给你你寻求的代码。我这样做是因为我觉得你还有很多需要学习的东西,但我会告诉你该怎么做,只是不给你代码。如果你说这行代码有用......
@joblisting = Joblisting.where(:developer_id => current_developer[:id])
if @joblisting.where(:project_status => "completed")
Notifier.notify_payout(current_developer).deliver
end
那么就这样吧。至于将:project_status
列从“已完成”更新为“已付款”,可以采用多种方式来处理此问题。您可以在模型中创建一个方法(让我们称之为project_is_paid
),将项目状态更改为已付款,并在成功时在notify_payout
方法内声明它。
但对于那些查看您的代码的人来说,这可能会让人感到困惑,并且想知道为什么记录会突然从数据库中的“已完成”变为“付费”。另外,您必须将作业列表对象作为参数传递,这更加有效。
另一种思考方式是在控制器内部编写一个简单的条件语句。如果邮件已发送,则调用方法project_is_paid
。小心不要开始将所有这些逻辑添加到控制器中,控制器应简洁明了。让模型处理逻辑。
我想回到你发布的工作控制器代码。我愿意打赌你可以将以下两行合而为一。
@joblisting = Joblisting.where(:developer_id => current_developer[:id])
if @joblisting.where(:project_status => "completed")
我为什么这么说?那么你正在对同一个表Job Listings
进行两次查询。如果您无法弄清楚如何... link
如果我在评论中没有回答你的最新问题,我很抱歉。在您的问题中发布更新,我很乐意更新自己的答案。