Tag: 符号

在Rails模型中; 保存到DB时,符号会自动转换为YAML。 什么是正确的方法?

在我的模型示例Game中,有一个状态列。 但我通常使用符号设置状态。 例 self.status =:活跃 MATCH_STATUS = { :betting_on => “Betting is on”, :home_team_won => “Home team has won”, :visiting_team_won => “Visiting team has one”, :game_tie => “Game is tied” }.freeze def viewable_status MATCH_STATUS[self.status] end 我使用上面的Map在可查看状态和反之间切换。 但是,当数据保存到db时,ActiveRecord会将“—”附加到每个状态。 因此,当我回收时,状态被搞砸了。 什么应该是正确的方法?

Ruby on Rails – 使用符号数组获取对象关联值

例如,有模型: class Activity < ActiveRecord::Base belongs_to :event end class Event < ActiveRecord::Base has_many :activities attr_accessible :foo end 我可以通过使用activity.event.foo(足够简单)来获取活动的事件foo。 但是我想创建一个generics函数,首先找出一个对象是否有belongs_to关联,然后通过belongs_to关联获取该对象的foo(假设所有对象都通过belongs_to关联有foo)? 到目前为止,我有以下内容给我一个反思: def get_foo(object) object.class.reflect_on_all_associations(:belongs_to).each do |belongs_to| return object.?????? end end 我可以通过belongs_to.klass(例如[Event])获取reflection类名的数组,或者通过belongs_to.name(例如[:event])获取belongs_to关联的符号数组。 考虑到从reflection中得到的东西,我如何获得对象的belongs_to的foo? 没有使用reflection,有没有更简单的方法来做到这一点? 我希望这很简单,我只想说明如何解决这个问题。 我也希望我有点清楚。 这是我的第一个Stack Overflow问题。

如何存储和比较:ActiveRecord中的符号(Ruby on Rails)

我认为使用常量填充activeRecord表中的状态字段会很好。 但是,当检查此状态是否具有特定状态时,我遇到了麻烦。 如果我做以下, e = Mytable.new e.status = :cancelled e.save 然后重新记录该记录并尝试将我的状态与符号进行比较,检查失败。 我有一些来自控制台的输出来显示这一点。 irb(main):060:0> e.status.eql?(“cancelled”) => true irb(main):061:0> e.status.eql?(:cancelled) => false irb(main):062:0> e.status == :cancelled => false irb(main):063:0> e.status == “cancelled” => true irb(main):064:0> e.status == :cancelled.to_s => true 是否有更好的方法在记录中保持身份? 有没有办法测试当前字段值是否等于:符号而不将:符号转换为字符串? 我想可能有一个我不知道的运营商。

这是Ruby中符号的正确使用吗?

我正在使用第4行的符号进行代码质询。第4行的代码是做什么的? 第4行没有正确使用符号??? 1 class NameThingy 2 3 def format_name(name) 4 return “#{name[:last]}, #{name[:first]}” 5 end 6 7 def display_name(name) 8 puts format_name(name) 9 end 10 11 end my_name = NameThingy.new#(“Jessica Flores”) my_name.format_name(“Jessica Flores”) my_name.display_name(“Jessica Flores”) 当我运行它时,我收到此错误消息: test.rb:6:in `[]’: can’t convert Symbol into Integer (TypeError) from test.rb:6:in `format_name’ from test.rb:17:in `’

传递&:方法和:方法作为ruby中的函数参数之间的区别

我正在努力理解何时使用&符号将符号传递给表示方法的函数。 例如,如果我想计算范围1..10的总和,我可以执行以下操作: (1..10).inject(:+) 这最初让我相信,如果你想传递一个符号来定义一个方法,以便在函数中使用“Magically”,你可以将函数名称作为符号传递。 但后来我在rails中看到了这样的东西: total = Product.find(product_list).sum(&:price) 如果我理解正确,&:price与调用:price.to_proc相同。 我不明白上面的工作原理。

这些奇怪的字符是什么意思?

我正在阅读Ruby书,但它没有解释以下内容: 这是什么: validates :name, :presence => true 我的意思是我知道它的作用但是什么是validates ? 它是validation器类的方法吗? 如果是这样的话,怎么在没有提到类名的情况下调用呢? 是什么意思:在前面的代码和Rails中一般? 在以下代码中: form_for是一个对象还是一个程序函数? 什么是|的含义 |f|字符 在 谁,何时何地定义了edit_post_path方法? 它属于哪个class级?

访问哈希和数组Ruby

在我的Rails应用程序中,我发送了一个需要解码的复杂JSON字符串。 这不是我知道的问题。 在我实现所有内容之前,我正在尝试访问一些示例JSON结构,以查看是否可以获取所有变量。 问题是名称可以是变量。 {“configurations” : [ { “drinks” : [ {“menus” : [ { “hot” : [ {“id”:15,”unit”:”0.33″, “price”:”1″, “currency”:”Euro”, “position”: 4}, {“id”:15,”unit”:”0.33″, “price”:”1″, “currency”:”Euro”, “position”: 6} ] }, { “cold” : [ {“id”:15,”unit”:”0.33″, “price”:”1″, “currency”:”Euro”, “position”: 4}, {“id”:15,”unit”:”0.33″, “price”:”1″, “currency”:”Euro”, “position”: 6} ] }, { “terminals” : [ {“id” : 4}, {“id”: 6}, […]

为什么我的代码在使用哈希符号而不是哈希字符串时会中断?

我有一个场景,当我尝试使用符号访问哈希键时,它不起作用,但当我用字符串访问它时它工作正常。 我的理解是建议使用符号而不是字符串,所以我试图清理我的脚本。 我在我的脚本中的其他地方使用哈希符号,只是这个特定的场景不起作用。 这是片段: account_params ={} File.open(‘file’, ‘r’) do |f| f.each_line do |line| hkey, hvalue = line.chomp.split(“=”) account_params[hkey] = hvalue end end account_scope = account_params[“scope”] 这是有效的,但如果我使用它不符号,如下所示: account_scope = account_params[:scope] 当我使用符号时,我得到: can’t convert nil into String (TypeError) 我不确定它是否重要,但这个特定哈希值的内容看起来像这样: 12345/ABCD123/12345

为什么回调在Ruby on Rails中使用符号

我很难理解何时何时不在Rails中使用符号。 我知道符号与没有很多方法的字符串差别不大。 我也理解符号是好的键,因为同名的符号占用内存中的一个地址。 我很难理解为什么Rails决定在某些情况下使用符号。 如果我有回调 before_action :ask_stack_overflow_question def ask_stack_overflow_question puts “why did I just use a symbol?” end 我不太明白为什么把方法当作符号? 为什么我需要保持方法不变? 我在文档中找不到任何答案。 谢谢

Ruby和:符号

我刚刚开始使用Ruby,我正在阅读“编程Ruby 1.9 – 实用程序员指南”。 我遇到了一些叫做符号的东西,但作为一名PHP开发人员,我不明白他们做了什么以及他们有什么好处。 任何人都可以帮我解决这个问题吗?