Ruby on rails 如何检查模型';s属性';s值多少?

Ruby on rails 如何检查模型';s属性';s值多少?,ruby-on-rails,Ruby On Rails,嘿,谢谢你花点时间来检查我的问题。Rails在这里是新手,这应该很容易,但我已经把自己弄得完全糊涂了 我试图检查我的模型的布尔属性是否设置为false,如果设置为false,则将其更新为true。以下是我现在拥有的: if @subscriber[ is_active: false ] @subscriber.update(is_active: true) render 'exists_add' end 我知道这一定是个愚蠢的问题,但由于某些原因,我无法在文档中或通过Goog

嘿,谢谢你花点时间来检查我的问题。Rails在这里是新手,这应该很容易,但我已经把自己弄得完全糊涂了

我试图检查我的模型的布尔属性是否设置为false,如果设置为false,则将其更新为true。以下是我现在拥有的:

if @subscriber[ is_active: false ]

   @subscriber.update(is_active: true) 

   render 'exists_add'
end

我知道这一定是个愚蠢的问题,但由于某些原因,我无法在文档中或通过Google找到一个好的答案。

Rails将谓词方法添加到所有模型属性中。因此,您可以对任何属性执行此操作<代码>模型.属性\u名称?。注意最后的问号。布尔方法也是如此。所以你应该能够做到以下几点

@subscriber.is_active?
以您的例子:

@subscriber.update(is_active: true) unless @subscriber.is_active?

假设您有一个属性为
订户
模型处于活动状态

然后,您可以这样做:

unless @subscriber.is_active    
   @subscriber.update(is_active: true)    
   render 'exists_add'
end

假设您已经设置了
@subscriber
,并且它指向
subscribers
表中的一条记录。

Rails将谓词方法添加到所有模型属性中
?这是真的吗?我只是试了一下,但没有成功。您的意思可能是说@subscriber.u处于活动状态时,所有布尔属性都处于活动状态?当我需要相反的结果时返回false,这就足够让我达到目的了。使用@订阅服务器。您是否处于活动状态?现在工作得很有魅力@不,我说的是真的。它向所有属性添加谓词方法。是否确实要调用现有属性?您得到了什么错误?@Khundawg这是因为我在示例中使用了
除非
关键字,而不是
如果
<代码>除非
使您无需执行
如果+1哦..我的错..我在检查虚拟桌子..我没意识到我一段时间前把它倒空了。