単にカピバラに指示しようとすると、次の失敗したテストがありますvisit ('/')
。
1) Credits when user is non-enabled show user credits available at the top.
Failure/Error: visit ('/')
NoMethodError:
undefined method `tag?' for nil:NilClass
# ./app/controllers/application_controller.rb:16:in `set_current_tag'
# ./spec/requests/credits_spec.rb:12:in `block (3 levels) in <top (required)>'
のコードはApplicationController
次のようになります
def set_current_site
current_host = request.host
@site = Site.where(domain: current_host).first
@site = Site.where(domain: 'mysiste.com').first unless @site.present?
end
def set_current_tag
if @site.tag? && Dvd.tagged_with(@site.tag, wild: true, any: true).any?
@site.tag = @site.tag
elsif params[:tag] && Dvd.tagged_with(params[:tag], wild: true, any: true).any?
@site.tag = params[:tag]
else
@site.tag = ''
end
end
私はこれを解決する方法とこれに対する理想的な解決策が何であるかについてここで少し迷っています。インスタンス変数のデザインをメソッドに変更し、FactoryGirl for Siteも使用する必要がありますか?
サイトモデルは非常に単純です。
class Site < ActiveRecord::Base
attr_accessible :domain, :content, :program, :tag, :locale, :parent, :title, :landing
validates_presence_of :domain
validates_uniqueness_of :domain
end
そして工場は
FactoryGirl.define do
factory :site do
domain "dvdstore.com"
title "DVD Store"
program "premium"
content "movies"
end
end