活动记录查询 - Rails

时间:2016-06-20 16:59:32

标签: ruby-on-rails

目前我有一个名为Visit的方法,它基本上添加了Subscriber上的访问计数器。当Subscriber在表单中输入phone_number时,会触发此方法。我只是想创建一个看起来像Susbcriber.find_by(params[id]).last.visit的活动记录查询(这不适用于BTW)。希望你得到我想要做的事情,基本上用电话号码打电话给最后签到的人。为了清楚起见,我会展示我的代码。

控制器方法:

 def search
  @subscriber = Subscriber.new
 end

 def visit
  @subscriber = Subscriber.find_by(params[:phone_number])
  if @subscriber
   @subscriber.visit ||= 0
   @subscriber.visit += 1
   @subscriber.save
   flash[:notice] = flash[:notice] = "Thank You #{@subscriber.first_name}. You have #{@subscriber.days_till_expired} until renewal"
  redirect_to subscribers_search_path(:subscriber)
 else
  render "search"
 end
end

在那里,您可以看到订阅者输入其电话号码时触发的方法。我只是想在控制台中呼叫那个人。

当前不工作的控制器方法:

  def create
    @subscriber = Subscriber.find(params[:subscriber_id])
    @comment = @subscriber.comments.build(comments_params)
  if @comment.save
    flash[:notice] = "Thank you!"
    redirect_to subscribers_search_path(:comments)
  else
    render "new"
  end
end

这是需要新查询来查找刚刚输入其电话号码的订阅者的方法。

如果您需要更多信息,请告诉我?谢谢!

1 个答案:

答案 0 :(得分:1)

我正在编辑我的答案,根据评论更具包容性。看起来你在这里遇到了很多问题,也许你需要退后一步,重建这个问题。考虑测试驱动它和/或至少验证你正在使用调试工具得到你期望的东西(byebug,pry,甚至只是明智地使用'puts'和'inspect')。

find_by方法要求您指定要尝试用于查找行的属性,以及属性的值

With ThisWorkbook.Worksheets("SheetNameYouWantToReferTo")
    .Cells(i, 10).Offset(6, 0).Formula = .Cells(i, 10).Formula
End With

如果您使用的是模型的主键,只需使用find:

@subscriber = Subscriber.find_by(phone_number: params[:phone_number])

如果您正在调用控制器操作,则应始终存在params。在继续使用任何其余代码之前,请尝试检查参数。确保你得到你期望的。如果没有,请评估您的观看代码。