【发布时间】:2014-03-02 16:48:31
【问题描述】:
我进行了大量研究,但找不到任何类似的问题/答案,因此感谢您的帮助。
我的应用在本地运行良好,但是当我推送到 Heroku 时,它会阻塞我的会话变量。具体来说,当我尝试访问会话中持有的对象的属性时,它会为 nil:NilClass 引发 NoMethodError。在切换到参数并取得成功后,我已将其缩小到会话。但是,我更喜欢使用会话,因为它可以让我的代码更简洁一些。
我四处寻找,似乎每个会话对象都在发生这种情况。快速上下文是我创建了一个新费用,然后是一个新组织,然后将费用与该组织相关联。
协议是 https(这是一个结帐页面),这些调用是通过 jQuery 异步发生的,尽管我不确定这是否重要。导轨 3.2。 Heroku 上的 Cedar/Postgres。 Sqlite3/Thin 本地。
Heroku 上的会话发生了什么?
生产.rb
config.session_store :cookie_store, :key => '_my_app_session', :domain => :all
application_controller.rb
...
helper_method :current_charge
def current_charge
@_current_charge ||= session[:current_charge_id] &&
Charge.find_by_id(session[:current_charge_id])
end
...
charges_controller.rb
def create
@charge = Charge.new(params[:charge])
if @charge.save
session[:current_charge_id] = @charge.id
...
end
organizations_controller.rb
def create
@organization = Organization.new(params[:organization])
if @organization.save
@charge = current_charge
@charge.organization_id = @organization.id
@charge.save!
...
end
Cedar 日志(在 organizations_controller.rb 上抛出)
NoMethodError (undefined method `organization_id=' for nil:NilClass):
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 session heroku