在rails中使用end关键字作为变量



我的项目的一个资源有一个属性1.story(integer)、2.start(date_time)和3.end(date_ttime)。现在的问题是我不能为这个资源创建测试用例的工厂。原因是"结束"这个关键词。我想要。。。

FactoryGirl.define do 
  factory :my_factory do
    story "My story"
    start '2013-12-09 14:48:29 +0530'
    end Time.now                                                 
  end                                                                  
end

这就是为什么我想使用结束关键字作为变量。提前谢谢。

您不能而且真的不应该使用ruby关键字作为方法名。

您还可以使用其他单词,如haltstop

没有办法将"end"更改为非Ruby关键字。如果你要更改这个关键字的定义,所有其他代码都会失败,因为无论何时使用它,它都会绑定到这个关键字。因此,即使你的项目很大:更改名称是更快的,更不用说你只有ONLY选项!

我知道这是一条老线索,但我想把我的帽子扔到的戒指上

你可以做

FactoryGirl.define do 
  factory :my_factory do  
     {
        "story" => "My story",
        "start" => "2013-12-09 14:48:29 +0530",
        "end" => Time.now
      }                                       
  end                                                                  
end

这将帮助你避免使用end关键字,你可能只需要在计划使用工厂的任何时候覆盖它,或者你可以尝试将上面的哈希转换为特征

   FactoryGirl.define do 
      trait :my_factory do  
        example_attribute do
           {
            "story" => "My story",
            "start" => "2013-12-09 14:48:29 +0530",
            "end" => Time.now
          } 
        end                           
      end                                                                  
    end

相关内容

最新更新