【问题标题】:Use end keyword as a variable in rails在rails中使用end关键字作为变量
【发布时间】:2013-12-09 09:54:25
【问题描述】:

我项目的一个资源具有属性 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

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

【问题讨论】:

  • 我不认为你这样做是在帮自己一个忙。你应该诚实地考虑使用“end”以外的东西!

标签: ruby-on-rails keyword


【解决方案1】:

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

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

【讨论】:

  • 我的项目太大了,问题是我无法更改这些变量名,请给我一些建议。
  • 这是不可能,因为它会产生歧义:ruby 如何解释“end”字:调用 end 方法或块的结尾?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    你可以的

    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
    

    【讨论】:

      猜你喜欢
      • 2021-09-11
      • 1970-01-01
      • 2014-10-16
      • 2011-09-02
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      • 1970-01-01
      相关资源
      最近更新 更多