البيانات الديناميكية في الخيار الجداول

StackOverflow https://stackoverflow.com/questions/1617937

  •  06-07-2019
  •  | 
  •  

سؤال

لدي الخيار طاولة واحدة من المجالات هو التاريخ الذي أود أن يكون بالسكان مع تاريخ اليوم.هل هناك طريقة للقيام بذلك دون الحاجة إلى رمز القرص الثابت تاريخ اليوم إلى الطاولة ؟

أساسا أنا أود أن أدخل Time.now.strftime("%Y-%m-%d") في الجدول ولا يكون ذلك كسر.

هل كانت مفيدة؟

المحلول

ومنذ يتم معالجة الجدول بالتعريف خطوة الخاص بك، هل يمكن وضع حامل مكانة خاصة في الجدول، مثل سلسلة "TODAYS_DATE"، ومن ثم استخدام map_column! لمعالجة البيانات في العمود إلى التنسيق الذي تريده.

وعلى سبيل المثال نظرا للجدول التالي

Given the following user records
  | username | date        |
  | alice    | 2001-01-01  |
  | bob      | TODAYS_DATE |

في تعريف خطوتك سيكون لديك

Given /^the following user records$/ do |table|
  table.map_column!('date') do |date| 
    if date == 'TODAYS_DATE'
      date = Time.now.strftime("%Y-%m-%d")
    end
    date
  end
  table.hashes.each do |hash|
    #Whatever you need to do
  end
end

ملاحظة هذه التغييرات فقط القيم عندما تسأل عن تجزئة. سوف الطاولة وtable.raw لا تزال هي نفسها، ولكن كلما كنت في حاجة إلى تجزئات التوالي، وسوف يتم تحويلها من قبل رمز داخل map_column!

نصائح أخرى

وأنا أعلم انها كانت منذ العصور سئل هذا السؤال ولكن كنت أفعل شيئا من هذا القبيل مع خيار مؤخرا لذلك ليس هنا حل بديل إذا كان أي شخص مهتمون ...

Given the following user records
 | username | date                             |
 | bob      | Time.now.strftime("%Y-%m-%d")    |

وبعد ذلك في تعريف خطوة الخاص بك فقط وحدة التقييم () سلسلة تاريخ

Given /^the following user records$/ do |table|
  table.hashes.each do |hash|
    date = eval(hash["date"])
  end
end

وعلى الرغم من أن خلافا سبيل المثال براندون هذا لن تسمح لك وضع في التواريخ المحددة، وكذلك دون بعض مزيد من المنطق.

والجواب bodnarbm هو جيد جدا إذا كان هذا ما تريد القيام به. سيكون اقتراحي الخاص أن يكون لنلقي نظرة على في timecop جوهرة . استخدامه لضبط الوقت إلى يوم عرفت بعد ذلك ضبط الجداول الخاصة بك وفقا لذلك.

على أساس تركيب الملفات أنا خلقت هذا الكود:

ميزة:

Given the following "Inquirers":
  | id | email                    | start_date        |
  |  1 | alberto@deco.proteste.pt | <%= Time.now %>   |

مساعد:

Given(/^the following "(.*?)":$/) do |model, table|
  table.hashes.each do |hash|
    attributes = Rack::Utils.parse_nested_query(hash.to_query)
    object     = model_name.classify.constantize.new

    attributes.keys.each do |key|
      object.send("#{key}=", ERB.new(value).result())
    end
    ...
  end
end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top