【译】把代码移到模型中

Sunday, July 25, 2010

原文:http://rails-bestpractices.com/posts/25-move-code-into-model

根据MVC的架构原理,在视图中不应该有逻辑代码, 在这个例子中, 我将介绍怎样把代码移到模型中

丑陋的...

<% if current_user && (current_user == @post.user ||
           @post.editors.include?(current_user)) %>
  <%= link_to 'Edit this post', edit_post_url(@post) %>
<% end %>

在这个例子中, 我们在视图中使用了一段复杂的判断编辑权限的代码, 但是复杂的逻辑代码不应该出现在视图中, 所以我们把它移到模型中去

重构...

<% if @post.editable_by?(current_user)) %>
  <%= link_to 'Edit this post', edit_post_url(@post) %>
<% end %>

model

class Post < ActiveRecord::Base
  def editable_by?(user)
    user && (user == self.user || self.editors.include?(user))
  end
end

现在视图中的代码看上去清爽多了, 我们把判断权限的代码移到了模型中定义了个editable_by?方法来处理,
可读性也变好了,同时也更容易复用这个editable_by?方法

This entry was tagged Rails and Best-Practices

comments powered by Disqus

© 2009-2013 lxneng.com. All rights reserved. Powered by Pyramid

go to Top