ruby-on-rails - 执行此命令的更像 Ruby 的方法是什么?

标签 ruby-on-rails ruby

我想这样做:

sender_email = @request.user.paypal_email if @request.user.paypal_email == "paypal@anonymous.com"

所以基本上我只想在用户的 paypal 电子邮件是 "paypal@anonymous.com" 时执行命令。这工作正常,但似乎还有重构的空间。

最佳答案

@request.user.paypal_email

有些人会提倡您“只使用一个点”。 ( See 'Law of Demeter'. ) 您可能要考虑使用 Rails 'delegate' method

class User < ActiveRecord::Base
  has_many :requests
end

class Request < ActiveRecord::Base
  belongs_to :user

  delegate :paypal_email, :to => :user
end

然后就可以写了

@request.paypal_email

或者如果你愿意

class Request < ActiveRecord::Base
  belongs_to :user

  delegate :paypal_email, :to => :user, :prefix => true
end

@request.user_paypal_email

关于ruby-on-rails - 执行此命令的更像 Ruby 的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4642105/

相关文章:

html - 在 Rails 部分和布局中找到 html 的定义位置的最简单方法是什么?

ruby-on-rails - 如何获取数据库中的原始 'created_at' 值(不是转换为 ActiveSupport::TimeWithZone 的对象)

html - rails : How can I define the size of an image in table data?

ruby-on-rails - 如何从ruby on Rails和nodejs中的csv文件读取第2张表

ruby - 无法使用 ruby​​installer 安装 rails 4.0。 *** extconf.rb 失败 ***

ruby-on-rails - 使用回形针将 Heroku 上的图像上传到 Amazon s3 时 Rails 访问被拒绝

ruby-on-rails - 无法加载在 Rails 控制台中使用 bundler 安装的 gem

ruby-on-rails - rails 3 : Cloning already-validated object prevents clone being invalidated -- is this strange or normal?

ruby - 如何从 rake 文件中的命令行决定我的浏览器(*firefox,*ie)?

ruby - 获取当前日历月开始对应的时间