`
jsntghf
  • 浏览: 2543012 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

使用模型的回调

 
阅读更多

使用模型的回调可以避免在控制器中的CRUD方法中写一些逻辑代码。

 

丑陋的

 

<% form_for @post do |f| %>
  <%= f.text_field :content %>
  <%= check_box_tag 'auto_tagging' %>
<% end %>

class PostsController < ApplicationController
  def create
    @post = Post.new(params[:post])

    if params[:auto_tagging] == '1'
      @post.tags = Asia.generate_tags(@post.content)
    else
      @post.tags = ""
    end

    @post.save
  end
end

 

在这个例子中,如果用户点了auto_tagging这个复选框,将会根据文章的内容来生成标签,然后在保存之前把标签赋值给这篇文章,我们可以把标签的赋值代码移到模型中,通过模型的回调来处理。

 

重构

 

class Post < ActiveRecord::Base
  attr_accessor :auto_tagging
  before_save :generate_tagging

  private
  def generate_taggings
    return unless auto_tagging == '1'
    self.tags = Asia.generate_tags(self.content)
  end
end

<% form_for @post do |f| %>
  <%= f.text_field :content %>
  <%= f.check_box :auto_tagging %>
<% end %>

class PostsController < ApplicationController
  def create
    @post = Post.new(params[:post])
    @post.save
  end
end

 

和你看到的一样,我们在Post模型中创建了一个before_save回调方法来生成标签并赋值(如果用户点击了auto_tagging这个复选框),这样在控制器中就不必关心模型的逻辑了。

分享到:
评论

相关推荐

    嵌入式程序设计回调函数模型

    回调函数的使用需要考虑以下几个关键点: 1. **回调函数的定义**:回调函数应具有清晰的接口,只处理与特定事件相关的操作,以保持代码的简洁和可读性。 2. **注册回调**:在系统初始化阶段,开发者需要将回调函数...

    java代码-使用java解决回调模型的源代码

    java代码-使用java解决回调模型的源代码 ——学习参考资料:仅用于个人学习使用!

    java 回调函数 实现

    3. **CallMeTest.java**:这个文件可能包含测试代码,用于展示如何使用回调函数。它可能创建了一个实现了`OnButtonClickListener`接口的类,并在按钮实例上设置该监听器。当按钮被点击时,回调函数(即接口中的方法...

    labview回调范例

    总结来说,“labview回调范例”展示了如何利用LabVIEW的事件驱动编程模型,结合回调函数和引用,来实现用户交互的动态响应。这种技术广泛应用于各种应用,如实时数据可视化、交互式仪表盘和控制面板。理解并熟练掌握...

    PB 回调函数,多线程

    2. **事件驱动编程**:在多线程应用中,使用PB的回调函数可以实现事件驱动模型。例如,当一个网络请求完成或数据解析成功后,通过回调通知主线程或其他工作线程进行后续处理。 3. **线程安全**:为了保证回调函数在...

    java实现企业微信回调配置案例

    本案例将详细讲解如何使用Java来实现企业微信的回调配置,并提供相关的工具代码示例。 1. **企业微信API介绍** 企业微信提供了丰富的API接口,包括但不限于用户管理、部门管理、消息推送等。回调配置主要是通过...

    asp.net中如何使用WPF回调

    然而,在 ASP.NET 中直接使用 WPF 的回调功能会遇到一些挑战,因为它们的执行环境和线程模型不同。 WCF(Windows Communication Foundation)服务提供了双向通信的能力,允许服务端不仅向客户端发送数据,还可以在...

    回调 回调 1

    对于分布式组件模型,如CORBA(Common Object Request Broker Architecture),回调机制可以通过定义接口并让客户端实现这个接口来实现异步调用。服务器端保存客户端提供的对象引用,当需要回调时,通过这个引用调用...

    Qt使用回调函数方(callback)

    在Qt中,我们可以通过信号和槽机制实现回调,这是一种事件驱动编程模型,当一个信号被触发时,与之连接的槽函数将会被调用。这种设计模式不仅灵活,而且符合Qt的编程风格。 1. **信号与槽的概念** - **信号...

    C++回调函数使用方法示例

    }`定义了一个接受两个整数并返回它们之差的匿名函数,可以直接作为回调使用。 在实际的通信编程中,回调函数常用于处理接收到的数据,比如在套接字编程中,可以注册一个回调函数来处理接收到的网络包,或者在多...

    iec61850 源码,已实现接口对接及模型操作回调接口

    源码中的模型数据接口回调功能意味着系统能够实时监听并响应模型数据的变化。当模型中的某个数据发生变化时,回调函数会被自动触发,执行预设的操作,如更新显示、存储历史数据或执行控制逻辑。这种机制使得系统能够...

    使用WCF的回调属性的例子

    本教程将深入探讨如何在WCF中使用回调属性来实现服务操作的双向通信。 WCF的传统模式通常是单向的,即客户端调用服务,服务执行操作并返回响应。然而,有时我们需要更复杂的交互,比如服务能够主动向客户端发送更新...

    C# 回调CV++ DLL 三种方法 和 多类之间共享一个回调函数

    回调函数是跨语言和跨进程通信中的关键组件,正确理解和使用回调能够帮助我们构建灵活、高效的应用程序。在C#与C++的交互中,选择合适的方法并注意回调函数的共享和线程安全是至关重要的。通过以上所述的三种方法,...

    回调函数应用.rar

    2. **事件驱动编程**:回调函数在事件驱动模型中扮演关键角色。当特定事件(如点击按钮、接收到新消息)发生时,对应的回调函数会被触发执行。例如,在Web开发中,我们可以为HTML元素绑定事件监听器,并提供一个回调...

    C++JNI多线程回调java

    总的来说,理解和实现"C++ JNI多线程回调java"涉及到对JNI接口的深入理解,对多线程编程的掌握,以及对Java并发模型的认识。这是一个高级的跨语言编程话题,需要开发者具备扎实的C++和Java基础。在实际项目中,这样...

    Java利用接口实现回调

     熟悉MS-Windows和X Window System事件驱动编程模型的开发人员,习惯于传递在某种事件发生时调用(即“回调”)的函数指针。Java的面向对象模型目前并不支持方法指针,这样似乎不可能使用这种很好的机制。但我们并...

    在 ASP.NET 网页中实现回调

    在 ASP.NET 中,客户端回调是一种优化网页交互的技术,允许页面的部分内容更新而无需完整刷新。这种技术提高了用户体验,因为减少了网络通信的开销。本文将详细介绍如何在 ASP.NET 网页中实现客户端回调,包括回调...

    VC++ COM组件回调(EXE组件回调客户端)

    - 使用Visual Studio的调试工具进行调试,确保客户端和服务端的交互按预期进行,特别关注接口调用和回调的执行流程。 - 编写单元测试或集成测试,验证各个组件的功能和回调逻辑。 通过以上步骤,你可以构建一个...

    vc 回调函数的样例

    总之,“vc 回调函数的样例”涉及的是如何在VC环境下使用回调函数进行事件处理和通信。理解并熟练掌握回调函数对于任何Windows编程开发者来说都是必不可少的技能。通过实际编写和调试回调函数的代码,你可以更好地...

    安卓应用的回调序列与模型检测应用.pdf

    在建模完成后,使用模型检测语言NuSMV来表征生成的回调序列,这种方法能够帮助研究者在模型层面分析和验证回调函数间的时序关系。除此之外,线性时序逻辑(LTL)被用来表示目标验证属性,以便自动化地验证应用缺陷。...

Global site tag (gtag.js) - Google Analytics