2016-04-26 4 views
1

作成日の1年前のテーブルに日付をレンダリングするメソッドを作成する必要があります。タイトルに記載されている行を試しましたが、うまくいきませんでした。私は今すぐ "日付が期限切れ"と言いたいのですが、その隣に "日付結合"というリストがあるテーブルがあります。参加日から1年間となります。Created_at.1.year.from_now - Rails

例:

class Subscriber < ActiveRecord::Base 
    validates :first_name, presence: true 
    validates :last_name, presence: true 
    validates :email, presence: true 
    validates :phone_number, presence: true 

    def date_joined 
    created_at.strftime("%-m/%-d/%-y") 
    end 

    def expiration_date 
    created_at.1.year.from_now 
    end 
end 

どのように私はそのEXPIRATION_DATE方法をフォーマットする必要があります。 date_joinedは正常に動作します。

答えて

0

モデルが保存されるまで、created_atは入力されていないことを覚えておいてください。その計算は、それまでは動作しません。これは問題となる可能性があります。

date_joinedメソッドは存在してはいけません。任意のフォーマットの懸念は、あなたのビューの責任であるので、このようにそこにそのロジックをプッシュする必要があります。

<%= model.created_at.strftime("%-m/%-d/%-y") %> 

あなたも、あなたがconfig/locales/en.ymlにこれを追加することができますdemonstrated in this questionとしてロケールを使用して、日付の書式を定義することができます。

en: 
    date: 
    formats: 
     default: "%-m/%-d/%-y" 
    time: 
    formats: 
     default: "%-m/%-d/%-y %H:%M" 

次にあなたが必要な特別な処理せずにデフォルトとしてあなたのビューでこれを使用することができます。

フォーマットします
<%= model.created_at %> 

をいつもあなたが望むやり方で、各モデルのための特別なフォーマッタメソッドを定義し、それらを呼び出すことを忘れないでください。

それが将来的には、コンピューティングの日付になると、あなたが日付に数学を行うことができます。

def expiration_date 
    (self.created_at || DateTime.now) + 1.year 
end 

モデルが保存されていない場合でも動作します。

3

あなたはcreated_at時刻オブジェクトに1.yearを追加する必要があります

def expiration_date 
    created_at + 1.year 
end 

書式設定:

def expiration_date 
    (created_at + 1.year).strftime("%-m/%-d/%-y") 
end 

レールコンソール:

=> some_object.created_at 
=> Wed, 12 Apr 2016 17:37:12 UTC +00:00 
=> some_object.created_at + 1.year 
=> Wed, 12 Apr 2017 17:37:12 UTC +00:00 
=> (some_object.created_at + 1.year).strftime("%-m/%-d/%-y") 
=> "4/12/17" 
+0

両方とも同じ出力)) – 7urkm3n

+0

@ 7urkm3n確かに。一定。 –

+0

それは素晴らしいですが、私は時間をフォーマットしようとするとエラーになります。あなたが私がリストアップした他の方法と同じようにそれをフォーマットする方法を私に見せてもらえますか? – Bitwise

0

あなたが実際に間違っを求めているような気がしますここでの質問。 Railsでこの機能を実行するのではなく、Rubyの質問に「Ruby datetimeオブジェクト間のやりとりをどうやって動かすか」という質問をしています。私はあなたがRuby/Rails datetimeオブジェクトをとり、それらが最初にどのように動作するかを見ることをお勧めします。

他の誰かがあなたが見たいと思う答えを投稿すると確信しています。

+2

これは答えではなくコメントでなければなりません... – 7urkm3n

+0

@CameronBass np、ruby/railsで楽しみましょう!今のところjava(lava)の土地に詰まっている:( – dtc

関連する問題