我认为这只是常识和Ruby惯例,但我有这个方法:

def is_subscribed?(feed_url)
  Subscription.find_by_user_id_and_feed_id(self[ :id ], Feed.find_by_feed_url(feed_url))
end

唯一让我感到困惑的是,它并不像我最初预期的那样返回布尔值,而是在方法名的末尾打上问号.我的印象是,当将一个对象作为条件进行判断时,如果不是nil,它将返回true.

显然,我没有抓住重点,而且它不像我想的那样判断它.

所以,我的问题是,最好只做if (condition) true else false分吗?还是有更优雅的方法?

推荐答案

以…结尾的方法?应该返回一个可以计算为true或false的值.如果想要确保布尔返回,可以通过向查找器添加一个双爆炸来实现.

def is_subscribed?(feed_url)
  !!Subscription.find_by_user_id_and_feed_id(self[ :id ], Feed.find_by_feed_url(feed_url))
end

Ruby相关问答推荐

Ruby:如何在 vanilla ruby​​ 中使用有效支持日期?

如何用 yield_self 断链

整数除以负数

如何判断一个对象在 Ruby 中是否可迭代?

define_method:如何动态创建带参数的方法

从href html标签中提取带有Ruby中nokogiri的链接(URL)?

有没有比 Rspec 的 `should_receive` 更少干扰的替代方法?

差异 - unless/if

如何在 linux (ubuntu) 上更新 ruby​​?

Ruby 中的 Object 和 BasicObject 有什么区别?

ruby命令在我的 Mac 上没有任何作用

扩展self 和module_function一样吗?

如何强制 Ruby 显示完整的堆栈跟踪?

Ruby 2 中的命名参数

如何获取当前 rake 任务的 PID?

是否可以使用 Ruby 读取文件的修改日期?

如何使用 Ruby 的 self 关键字

将字符串与Ruby中的数字连接起来

如何编写启动 tmux 会话的 shell 脚本,然后运行 ​​ruby​​ 脚本

在 Ruby 中创建二维数组和访问子数组