[Rails] 액세스한 도메인을 통해 표시되는 데이터를 구분하고자 합니다.
 
 사이트 A 방문 시 상품 1과 상품 2만 표시
사이트 B 방문 시 상품만 표시3
모델에서 Request 정보를 가져올 수 있도록 허용
application_controller.rb
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  before_filter :set_request_filter # 追記
  # 追記
  def set_request_filter
    Thread.current[:request] = request
  end
end
이게 바로 모델에 있는 Theread입니다.current[:request]에서 request를 참조할 수 있습니다.
추가 scope
site.rb
class Site < ApplicationRecord
  has_many :items
  # ドメイン名に domain カラムのキーワードが存在するデータを取得
  scope :by_domain, lambda { |domain|
    where("? LIKE CONCAT('%', domain, '%')", domain)
  }
end
class Item < ApplicationRecord
  belongs_to :site
  # request.host でドメイン名を取得し、Site.by_domain の引数に渡す
  default_scope lambda {
    request = Thread.current[:request]
    return all unless request
    joins(:site).merge(Site.by_domain(request.host))
  }
end
확인
데이터를 적절히 작성하다.
> site_a = Site.create(name: 'サイトA', domain: 'aaa') # domain はドメイン名に含まれる文字列を指定
> site_b = Site.create(name: 'サイトB', domain: 'bbb') # 上記と同様
> site_a.items.create(name: '商品1')
> site_a.items.create(name: '商品2')
> site_b.items.create(name: '商品3')
$ cd ~/.pow 
$ ln -s ~/workspace/demo aaa
$ ln -s ~/workspace/demo bbb
aaa, 웹 사이트 B:bbb로 설정합니다.또한 Item 모델은 사전에 scaffold
방문해 보다
http://aaa.dev/items
 
 http://bbb.dev/items
 
 사이트 A 방문 시 상품 1과 상품 2만 표시
사이트 B 방문 시 상품만 표시3
나는 더 좋은 방법이 있다고 생각한다.
참고 자료
Reference
이 문제에 관하여([Rails] 액세스한 도메인을 통해 표시되는 데이터를 구분하고자 합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/u9r52sld/items/a2da84be9c7f65da01c7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)