我想这样做:
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/