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

时间:2013-12-09 09:54:26

标签: ruby-on-rails keyword

我项目的一个资源有一个属性1.story(整数),2.start(date_time)和3.end(date_time)。现在问题是我无法为测试用例创建此资源的工厂。原因是'结束'关键词。我想要像...这样的东西。

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

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

3 个答案:

答案 0 :(得分:5)

你不能和真的不应该使用ruby关键字作为方法名称。

您可以使用其他字词,例如暂停停止

答案 1 :(得分:2)

无法将“结束”更改为不是Ruby关键字的内容。如果您要更改此关键字的定义,则所有其他代码都会失败,因为无论何时使用它,它都会绑定到此关键字。所以即使你的项目很大:更改名称是更快的,而不是说你只有选择!

答案 2 :(得分:0)

我知道这是一个旧线程,但想把我的帽子扔进戒指

你可以做到

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