[英]Rails Pow access request.subdomain in model
我正在使用POW在MAC上本地運行Rails。 因此,我的網址有一個子域。
我想在模型中使用子域,但是以下代碼給了我“未定義的局部變量或方法'request'”。
碼:
class Vehicle < ActiveRecord::Base
acts_as_tenant(:tenant)
ct = Tenant.where(subdomain: request.subdomain).first
if ct.data.present?
ct.data.each do |key, value|
ransacker key do |parent|
Arel::Nodes::InfixOperation.new('->', parent.table[:data], key)
end
end
end
PS-該代碼在視圖中正常工作。
我正在嘗試此操作,因為我想Ransack搜索hstore type字段中用戶定義的字段。 我首先嘗試使用if ActsAsTenant.current_tenant.data.present?
-在本地效果很好,但在Heroku上效果不好(我一直無法弄清楚為什么)。
更新1
我試圖把它放在applications.rb中:
helper_method :my_var
def my_var
@ct = Tenant.find_by_subdomain!(request.subdomains.first)
end
然后在模型中:
if @ct.data.present?
但是,@ ct為零。 如何在應用程序控制器中設置要在模型中使用的變量?
模型類不了解請求(因為它們不應該理解,因為它們是數據庫中屬性集合的表示)。 如果您確實需要基於模型中的子域進行設置,建議您創建一個采用請求參數的方法。
目前尚不清楚您在做什么,但是從您提供的代碼中,您可以執行以下操作:
# app/models/vehicle.rb
class Vehicle < ActiveRecord::Base
acts_as_tenant(:tenant)
def self.ct=(request)
@ct = Tenant.where(subdomain: request.subdomain).first
end
end
這解決了我的問題:
class Vehicle < ActiveRecord::Base
acts_as_tenant(:tenant)
ct = Tenant.find(self.first.tenant)
if ct.data.present?
ct.data.each do |key, value|
ransacker key do |parent|
Arel::Nodes::InfixOperation.new('->', parent.table[:data], key)
end
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.