私はRailsのジャーナル用Webサイトを開発しています。私のページの1つに、降順で発行されたすべての単一のissueのリストがあります。私はまた、ユーザが名前を持たないので、年々問題をフィルタリングする選択ボックスを持っていますが、うまくいけば、問題内の記事がサイトにアップロードされていないと、彼らがより迅速に探しているものを見つけるのに役立ちます別々に。NoMethodError on Herokuしかしローカルにはありません
フィルタボックスのオプションを作成するために、私は問題のすべての一意の年のリストを返すように次の関数を作成しました(問題の日付フィールドは問題の公開日ですウェブサイトの前にある古い問題をアップロードする必要があります)。
Issue.select("date").order('date desc').map{ |i| i.date.year }.uniq
この機能は、自分のマシン上で見事に動作しますが、私はHerokuの(無料のアカウント)でそれを展開するとき、私はログをチェックするとき、それは次のようなエラーメッセージを表示します。
2017-08-15T15:19:42.521061+00:00 app[web.1]: Started GET "/issues" for 83.136.45.169 at 2017-08-15 15:19:42 +0000
2017-08-15T15:19:42.522804+00:00 app[web.1]: Processing by IssuesController#index as HTML
2017-08-15T15:19:42.524822+00:00 app[web.1]: Issue Load (0.9ms) SELECT "issues"."date" FROM "issues" ORDER BY date desc
2017-08-15T15:19:42.525378+00:00 app[web.1]: Completed 500 Internal Server Error in 2ms (ActiveRecord: 0.9ms)
2017-08-15T15:19:42.525925+00:00 app[web.1]:
2017-08-15T15:19:42.525926+00:00 app[web.1]: NoMethodError (undefined method `year' for nil:NilClass):
2017-08-15T15:19:42.525927+00:00 app[web.1]: app/controllers/issues_controller.rb:12:in `block in index'
2017-08-15T15:19:42.525927+00:00 app[web.1]: app/controllers/issues_controller.rb:12:in `index'
私は最後のプッシュ以来、データベースを変更していません。この状況をさらにデバッグする方法がわかりません。
「コンパクト」は何を説明していただけますか? –
@BrianMcNestry私の回答を編集しました –
Rails 4.0で 'where.not'が追加されたので、最後に最初の解決策を使用することができました。しかし、&メソッドはうまくいきませんでした。 –