メソッドクラスを実行するためのテストクラスを作成しています(メソッドクラスには実行するSQL文があります) しかし、NoMethodError: undefined method
'for nil:NilClass`は与えられた。NoMethodError:未定義メソッド `duration for nil:NilClass
class AverageTimeForFirstReferralTest < ActiveSupport::TestCase
def setup
user1 = FactoryGirl.create(:user)
user2 = FactoryGirl.create(:user)
user2.referrer_id = user1.id
user2.created_at = 1.month.from_now
end
def test_creating_view_for_avg_time_for_first_ref
AverageTimeForFirstReferral.update_view_command();
assert_equal(1.month * 1.hour, AverageTimeForFirstReferral.first.duration)
end
end
メソッドクラスは以下の通りです:
class AverageTimeForFirstReferral < ActiveRecord::Base
class << self
def update_view_command
# executing the sql statement
self.connection.execute %Q(CREATE OR REPLACE VIEW average_time_for_first_referrals AS
SELECT u.id, u.created_at user_created_at, u.referrer_id, r.`created_at` referrer_created_at, TIMEDIFF('r.created_at','u.created_at') as Time_Diff
from users u inner join users r
on u.`referrer_id`= r.`id`
WHERE TIMEDIFF(r.created_at,u.created_at) > 0;)
end
end
end
テーブルに 'AverageTimeForFirstReferral'という行があり、工場の女の子を使用して作成する必要があるようです。 – coderhs