`
inosin
  • 浏览: 90956 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ruby中delegate的一些用法

    博客分类:
  • ruby
阅读更多
Class Account < ActiveRecord::Base
 
    delegate :firstname, :to => :user
    # firstname => user.firstname

    delegate :firstname, :to => :user, :prefix => true
    # user_firstname => user.firstname

    delegate :firstname, :to => :user, :allow_nil => true, :prefix => true
    # user_firstname => user.try(:firstname)
 
    delegate :name, :to => "user.try(:editor)", :prefix => :editor
    # editor_name => user.editor.name

    delegate :name, :to => "user.try(:editor)", :prefix => :editor, :allow_nil => true
    # editor_name => user.editor.try(:name)
 
end

参考:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/module/delegation.rb

分享到:
评论

相关推荐

    Ruby-Ruby中的GoF设计模式实现

    Ruby中的代理对象可以通过定义委托(delegation)来实现,例如使用`delegate`方法。 13. **职责链模式**:避免将请求的发送者和接收者耦合在一起,让多个对象都有可能处理请求。Ruby中,可以使用对象间的链式调用来...

    delegate_it:非 Rails 项目中 ActiveSupport 委托方法的替代品

    #委托 delegate_it gem 提供了一种在非 Rails 项目中使用 ActiveSupport 之类的delegate方法的简单方法。安装在您的 Gemfile 中: gem 'delegate_it'用法 require 'delegate_it'class Cowboy extend DelegateIt attr...

    Ruby-Draper将面向对象的表示逻辑层添加到您的Rails应用程序

    在这个例子中,`delegate_all`方法确保装饰器能够访问模型的所有方法,而`full_name`方法提供了一个自定义的表示逻辑。在视图中,你可以这样使用装饰器: ```erb (user) do |decorated| %&gt; 全名: ...

    design-patterns-ruby:Ruby设计模式

    Ruby中可以使用委托(Delegation)来实现代理,通过`DelegateClass`或者`Forwardable`模块可以轻松实现对象的方法转发。 4. **单例模式**(Singleton Pattern):单例模式确保一个类只有一个实例,并提供全局访问点...

    Ruby元编程的一些值得注意的地方

    因此,在可能的情况下,应优先考虑使用`delegate`或`define_method`来实现动态方法调用。 #### 九、捕捉定义良好的方法 在处理`method_missing`时,应该谨慎地定义捕获哪些方法调用。最佳实践是只捕获那些明确定义...

    dumb_delegator:Ruby的stdlib中的Delegator和SimpleDelegator很有用,但它们引入了大多数Kernel。 这不适用于许多用途。 例如,委托给Rails模型

    哑巴代表 Ruby提供了delegate标准库。 但是,我们发现对于几乎需要代理所有电话的情况,这是不合适的。 例如,Rails使用#class和#instance_of? 在生成表单和URL帮助器时对Model类进行自省。 使用Delegator或...

    ferrocarril::train:使用mruby进行将Ruby on Rails嵌入Rust的实验

    铁卡利 存档:甲卡维已被取代。... 利用为mruby定制的Ruby标准库程序包的实现,包括delegate ,可forwardable , json , monitor , ostruct , set , strscan和uri 。 利用。愚人金是实现Rust支持的Ruby

    IOS百度地图api实现选路简单查询定位导航

    创建BMKMapView实例,设置地图中心点,添加覆盖物展示起点和终点,然后使用`addPolylineWithPoints:polyline`方法添加路径线。 **五、步行导航** 步行导航与驾车导航类似,只需将查询方法更改为步行方式。 为了在...

    iOS-第三方1-富文本-动态标签-1ActiveLabel-basic

    通过这个项目,开发者可以学习如何在自己的应用中集成和使用ActiveLabel,提升用户体验,同时也可以借鉴其源码来理解如何扩展系统组件以满足特定需求。在实际开发中,了解和掌握这样的第三方库能大大提高开发效率和...

    重新主题:重新主题使装饰对象变得容易

    使用Ruby的SimpleDelegator的Uber简单演示者。 安装 将此行添加到您的应用程序的Gemfile中: gem 'resubject' , '~&gt; 0.3.0' 然后执行: $ bundle Ruby / Rails版本 该gem与Ruby 1.9和2.0以及Rails 3和4兼容。 ...

    swift-高德地图显示模式放大缩小集成讯飞语音输入并绘制路线

    创建一个MAMapView实例,设置其frame和delegate,然后在视图控制器的viewDidLoad方法中加载地图: ```swift import AMapFoundationKit import AMapNaviKit class ViewController: UIViewController, ...

    swift-WKWebView显示HTML中的GIF动图WebP无损图片最简单最方便的接入

    确保GIF文件已包含在你的应用资源中,并使用正确的URL路径引用它。 然而,对于WebP格式的无损图片,原生的`WKWebView`并不直接支持。WebP是一种高效的图片格式,可以提供无损压缩,减少应用的资源占用。为了在`...

    怎样在IOS中使用ping代码

    本篇文章将详细介绍如何在iOS中使用`ping`代码。 首先,我们要知道`ping`的基本原理。`ping`是一个网络诊断工具,通过发送ICMP(Internet Control Message Protocol)回显请求报文来测试网络连通性。当目标主机接收...

    IOS下拉刷新列表

    接下来,我们需要在UITableView的代理和数据源方法中进行一些配置。在`viewDidLoad`方法中,创建EGORefreshTableHeaderView实例,并将其设置为tableView的header view: ```swift let refreshHeaderView = ...

    ios 侧滑 RESideMenu

    在iOS应用开发中,侧滑菜单(Side Menu)是一种常见的设计模式,用于提供导航和功能选项,用户只需从屏幕边缘轻轻一划,就能看到隐藏在主界面下方的侧边栏。"RESideMenu"是iOS平台上一个流行且功能丰富的第三方库,...

    ios-CTCamera.zip

    下面我们将深入探讨`CTCamera`的功能、用法以及如何在项目中集成。 首先,让我们来看看如何将`CTCamera`添加到你的项目中。在终端中,前往你的项目目录并执行以下命令: ```bash pod init ``` 这会创建一个`...

    JPush-Swift-Deme

    通过【JPush-Swift-Demo】,开发者可以全面地理解JPush在Swift项目中的用法,从而快速地在自己的应用中实现高效的消息推送功能。不论是新手还是有经验的开发者,都可以从这个Demo中学到宝贵的知识,提升开发效率。

    swift-百度地图weex的iOS模块支持定位添加标注城市内搜索正逆地理编码

    记得在实际项目中处理好权限请求,确保用户授权使用地理位置信息,并优化用户体验,如添加错误处理和动画效果。此外,由于Weex的特性,还需要编写对应的JavaScript代码来调用这些Swift模块,实现跨平台的通信。在`...

    swift-LSMarqueeView快速集成一个上下滚动的跑马灯

    在本文中,我们将深入探讨如何使用LSMarqueeView进行集成,以及它所涉及的核心知识点。 首先,集成LSMarqueeView需要添加它的依赖库到项目中。可以通过CocoaPods来完成,这是iOS开发中常用的一个依赖管理工具。在...

    iOS QQ第三方登录源码

    此时,你需要在代理方法中解析返回的URL,提取Access Token和OpenID,这些信息可以用来请求用户的基本信息或者其他QQ服务。 例如,你可以使用`QQApiInterface`的`getUserInfoByOpenID:access_token:completion:`...

Global site tag (gtag.js) - Google Analytics