草庐IT

ruby - ruby attr_accessor 的奇怪行为

我有这段代码:classCallMeattr_accessor:a,:b,:cdefself.start(*args)self.new(*args).get_answerenddefinitialize(a,b,c)@a=a@b=b@c=cenddefget_answerifcb=nilelsereturnbendendendanswer=CallMe.start(1,2,nil)为什么当我在irb中运行它时,我总是得到answer=nil即使逻辑情况是得到b值为2 最佳答案 VariableHoisting效果在许多语言中使用。对

ruby-on-rails - 访问使用 attr_accessor 创建的变量

我想了解attr_accessor给我的访问权限。据我了解,它提供了getter和setter方法。所以attr_accessor:color它将为我创建如下内容defcolor@colorenddefcolor=(value)@color=valueend我不明白的是为什么在下面的代码中,为什么我不能在初始化程序中使用color=?(它最终是空白的)。为什么我需要使用@color=或self.color=来代替?color=不应该是一种调用上面刚刚为我创建的setter方法的方法吗?classBirdattr_accessor:colordefinitialize(c="green"

使用 attr_accessor 和初始化方法的 Ruby 类

致力于用Ruby制作一个小的命令行脚本,其中用户提供一些与餐厅相关的信息,以及返回计算的信息。目前我有以下代码:classRestaurantattr_accessor:name:type:avg_pricedefinitialize(name,type,avg_price)@name=name@type=type@avg_price=priceendend问题一如果我们使用attr_accessors声明方法type,和price,和name为什么Initialize方法是必要的?这是因为我们需要设置给它输入值?问题2有一个子类叫做RestaurantList其次是在代码中。这是什么

ruby - 冰糕要求 `sig` `attr_reader`

Sorbet显示attr_reader错误,但如果我错了请纠正我,当函数被声明而不是被调用时需要sigs,对吧?我已经尝试过阅读文档,但我得到的只是这个注释注意:许多看起来像局部变量的Ruby构造实际上是没有括号的方法调用!具体来说,注意attr_reader和零参数方法定义。app/util/hodor.rb:125:Thisfunctiondoesnothavea`sig`https://sorbet.org/docs/error-reference#7017125|attr_reader(:collection_name)^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

python - Python 中的 attr_reader

attr_reader在python中是否有一个“同义词”,就像不需要让我输入的东西一样?:classFoo():def__init__(self,foo,bar,spam,spammity,spam,spam,quux,foobar,barfoo):self.foo=fooself.bar=barself.spam=spam#Andsoon...只需一行代码就可以生成self.foo=foo,etc.,有点像ruby​​的attr_reader会生成@foo=foo 最佳答案 要设置所有内容,请尝试:classFoo():def_

ruby - `attr_accessor`/`attr_reader` 创建实例变量是什么意思?

attr_accessor的文档明确地说它创建了一个实例变量:[...]creatinganinstancevariable(@name)andacorrespondingaccessmethod[...]attr_reader的文档也是如此:Createsinstancevariablesandcorrespondingmethods[...]我理解第二部分,即attr_accessor和attr_reader创建方法,但我不明白第一部分。他们“创建实例变量”是什么意思? 最佳答案 这是文档中的错误/误导性措辞。attr_read

ruby-on-rails - 如何一次为所有类变量制作 'attr_reader' 或 'attr_writer'?

我正在使用RubyonRails3,因为我声明了一个包含很多变量的类,所以我会为这些类变量一次性声明所有“attr_reader”或“attr_writer”.我试过了classPersoneattr_reader:alldefinitialize(name,surname,...)@name=name@surname=surname...#Alotofvariables!endend但这不起作用。 最佳答案 classPersoneINSTANCE_VARS=[:name,:surname]attr_reader*INSTANCE

ruby-on-rails - rails : attr_accessor doesn't show up when try to render as JSON

在我的应用程序中,我有一个模型如下;classInit在这里,当我稍后添加了**attr_accessor**并尝试应用**renderjson:init**时,它不显示**clientAvailability**属性,即使我已经设置它作为;init=Init.newinit.clientAvailability="3"当我调试它时,我可以看到它已设置,但当我尝试将它呈现为json时,它并没有简单地显示出来。我可能遗漏了什么? 最佳答案 clientAvailability是数据库中的一列吗?如果没有,那么我认为这是默认方式-仅序列

ruby-on-rails - rails : Attr accessor undefined method in the setter

我在用户模型中有这行代码:attr_accessor:birthdate在同一个模型中,我有一个尝试通过这样做来设置生日的方法:self.birthdate=mydate其中mydate是一个Date对象。我收到此错误:undefinedmethodbirthdate='为什么会这样?attr_accessor不是创建了setter和getter吗? 最佳答案 让我猜猜,您是从类方法中调用setter的,对吧?classFooattr_accessor:bardefset_barvalself.bar=val#`self`isani

sql - 在 attr_encrypted 列上的 rails 中查询

我有一个ruby​​onrails应用程序,我正在使用attr_encryptedgem来加密一些用户信息。它有盐和IV,所以它是双向加密的。gem拦截动态find_by以协助查询,但对于我的情况来说这不是一个足够的查询,因为我关心结果的数量。有没有办法查询表以返回与给定secret匹配的所有结果?这是例子。我有一个users表,它有一个加密的secret属性。因此,该表具有encrypted_secret、encrypted_secret_iv和encrypted_secret_salt。如果一个用户给出了“abd123”的secret,我如何查询表以查看有多少其他人也使用“abc1