Mysql Ruby2和Rails4查询在开发时返回结果,但在生产时返回nil
我们正在用RubyonRails编写一个应用程序,我们遇到了一个奇怪的问题。 当我们在开发中运行应用程序时,查询返回的结果很好。 当我们在生产环境中运行应用程序时,查询返回nil,即使数据库中有记录也是如此。我直接通过MySQL服务器查询,所以我知道记录在那里 有什么想法吗?我已经包括了错误、迁移、模型、控制器和视图代码 我得到的错误是Mysql Ruby2和Rails4查询在开发时返回结果,但在生产时返回nil,mysql,ruby,ruby-on-rails-4,Mysql,Ruby,Ruby On Rails 4,我们正在用RubyonRails编写一个应用程序,我们遇到了一个奇怪的问题。 当我们在开发中运行应用程序时,查询返回的结果很好。 当我们在生产环境中运行应用程序时,查询返回nil,即使数据库中有记录也是如此。我直接通过MySQL服务器查询,所以我知道记录在那里 有什么想法吗?我已经包括了错误、迁移、模型、控制器和视图代码 我得到的错误是 undefined method `each' for nil:NilClass 第19行周围的提取源: @count = 1
undefined method `each' for nil:NilClass
第19行周围的提取源:
@count = 1
if @leadsHot != nil || @leadsHot != ''
@leadsHot.each do |lead| %>
<tr role="row" <% if @count / @count == 0 %>class="gradeA even"<% else %> class="gradeA odd" <% end %>>
<td class="sorting_1"><%= lead.category.to_s %></td>
<td><%= lead.fname.to_s %> <%= lead.l_name.to_s %></td>
迁移文件
class CreateLeads < ActiveRecord::Migration
def up
create_table :leads do |t|
t.column :category, :string
t.column :patent_status, :string
t.column :over_eighteen, :string
t.column :salute, :string
t.column :fname, :string
t.column :m_initial, :string
t.column :l_name, :string
t.column :address, :string
t.column :address1, :string
t.column :city, :string
t.column :state, :string
t.column :zip,:string
t.column :phone, :string
t.column :cell_phone, :string
t.column :fax, :string
t.column :email, :string
t.column :user_id, :integer
t.column :source, :string
t.column :lead_source_id, :integer
t.column :hot, :boolean, :null => false, :default => 0
t.column :comments, :text
t.column :active, :boolean
t.timestamps null: false
end
end
def down
drop_table :leads
end
end
模型
控制器
class Backoffice::SalesController < ApplicationController
include LogIt
include LeadManagement
include SalesModule
include TableDataMethods
def dashboard
@leadsAll = Lead.all().where("hot=0 AND active=1") #getvalidleads
@leadsHot = Lead.all().where("hot=1 AND active=1") #getHotLeads
@leadsDOA = Lead.all().where("active=0") #getRecentDeadLeads
@curClients = basicCurrentClientsTable
if @curClients == nil
@curClients = "<tr><td colspan='7'>No Clients Available</td></tr>"
end
if @leadsHot == nil
@leadsHot = "<tr><td colspan='7'>No Hot Leads Available</td></tr>"
end
end
end
看法
rails控制台生产结果
2.2.1 :004 > Lead.all().where(active: true, hot: true)
Lead Load (0.8ms) SELECT `leads`.* FROM `leads` WHERE `leads`.`active` = 1 AND `leads`.`hot` = 1
=> #<ActiveRecord::Relation [#<Lead id: 1, category: "Cars", patent_status: "none", over_eighteen: "Yes", salute: "Mr", fname: "Middleton", m_initial: "Jacksonmade", l_name: "Longtrowsers", address: "303 Springfield Ave", address1: "Apt D", city: "Lancaster", state: "North Carolina", zip: "97055", phone: "(803) 320-7672", cell_phone: "803-320-7672", fax: "", email: "george@betazedsoftwaresolutionsinc.com", user_id: nil, source: "Call In", lead_source_id: nil, hot: true, comments: "sdgsadfasdg", active: true, created_at: "2015-12-10 08:45:59", updated_at: "2015-12-10 08:45:59">, #<Lead id: 2, category: "Cars", patent_status: "Yes", over_eighteen: "Yes", salute: "Mr.", fname: "Furgo", m_initial: "Robert", l_name: "Man", address: "303 Springfield Ave", address1: "Apt D", city: "Lancaster", state: "North Carolina", zip: "97055", phone: "(803) 320-7672", cell_phone: "803-320-7672", fax: "", email: "billing@betazedsoftwaresolutionsinc.com", user_id: nil, source: "Call In", lead_source_id: nil, hot: true, comments: "asdfasdfasdf", active: true, created_at: "2015-12-10 08:52:21", updated_at: "2015-12-10 08:52:21">]>
如果你说它在dev上有效,那么它通常是愚蠢的。试着检查一下: 连接到数据库,配置 在视图中显示,可能打印对象的调试 查询对象的结果,打印调试
暂时激活调试并检查日志以寻找线索,或者转储数据库,然后在dev中仔细尝试prod dump,如果你说它在dev上工作,那么这通常是愚蠢的。尝试检查: 连接到数据库,配置 在视图中显示,可能打印对象的调试 查询对象的结果,打印调试 临时激活调试并检查日志以获取线索,或者转储数据库,并在dev查询中仔细尝试prod dump,其中hot=0和active=1取决于某个数据库,因为并非所有数据库都将true和false编码为1或0 按照以下方式编写查询:
Lead.where(hot: false, active: true)
像这样的查询wherehot=0和active=1取决于某个数据库,因为并非所有数据库都将true和false编码为1或0
按照以下方式编写查询:
Lead.where(hot: false, active: true)
运行查询不需要控制器和视图。您能否只显示模型、查询以及在rails控制台生产中运行查询时得到的结果,包括ActiveRecord中与数据库相关的日志输出?我添加了请求的信息。谢谢显然,查询没有返回nil。这是一个条件。我忘记了var==nil与var.nil不一样?所以我的条件是破坏它而不是查询。运行查询不需要控制器和视图。您能否只显示模型、查询以及在rails控制台生产中运行查询时得到的结果,包括ActiveRecord中与数据库相关的日志输出?我添加了请求的信息。谢谢显然,查询没有返回nil。这是一个条件。我忘记了var==nil与var.nil不一样?所以我的条件是破坏它,而不是查询。这样做了,但仍然有相同的问题和错误。谢谢,虽然我更喜欢这种方法:DDid,但仍然有相同的问题和错误。谢谢,尽管我更喜欢这种方法:这实际上帮助我发现了我在上面评论的情况的错误+1并被接受为答案!谢谢你,伙计!这实际上帮助我发现了我在上面评论的情况的问题所在+1并被接受为答案!谢谢你,伙计!
Lead.where(hot: false, active: true)