使用模型的回调
使用模型的回调可以避免在控制器中的CRUD方法中写一些逻辑代码。
?
丑陋的
?
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) endend<% 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 endend
?
和你看到的一样,我们在Post模型中创建了一个before_save回调方法来生成标签并赋值(如果用户点击了auto_tagging这个复选框),这样在控制器中就不必关心模型的逻辑了。