什么:这意味着Ruby on Rails?

Mar*_*ark 6 ruby symbols

我是Ruby和Ruby on Rails世界的新手.我已经阅读了一些指南,但我在使用以下语法时遇到了一些麻烦.我认为:condition在Ruby中使用语法来定义具有某种访问器的类属性,例如:

class Sample
  attr_accessor :condition
end
Run Code Online (Sandbox Code Playgroud)

隐式声明"条件"属性的getter和setter.虽然我正在查看一些Rails示例代码,但我发现以下示例我并不完全理解.

例如:

@post = Post.find(params[:id])
Run Code Online (Sandbox Code Playgroud)

为什么它id使用这种语法访问属性,而不是:

@post = Post.find(params[id])
Run Code Online (Sandbox Code Playgroud)


或者,例如:

@posts = Post.find(:all) 
Run Code Online (Sandbox Code Playgroud)

:all恒定的吗?如果没有,这段代码的真正含义是什么?如果是,为什么不使用以下内容:

@posts = Post.find(ALL)
Run Code Online (Sandbox Code Playgroud)

谢谢

Mar*_*off 12

文本前面的冒号表示Ruby中的符号.符号有点像常量,但它几乎就像一个符号接收一个唯一值(你不关心)作为它的常量值.

当用作哈希索引时,符号几乎(但不完全)与使用字符串相同.

此外,您可以:all通过调用to_s符号来阅读"all" .如果你有一个常量变量ALL,除了查找它的值之外,没有办法确定它意味着"全部".这也是为什么你可以使用符号作为参数传递给元方法,如attr_accessor,attr_reader等.

您可能想要阅读Ruby符号.