我已经做了一些关于如何扩展ActiveRecord:Base类的阅读,所以我的模型会有一些特殊的方法.扩展它的简单方法是什么(逐步教程)?
我有一个名为User的ActiveRecord类.我正在尝试创建一个关注点Restrictable,其中包含一些这样的参数:
class User < ActiveRecord::Base
include Restrictable # Would be nice to not need this line
restrictable except: [:id, :name, :email]
end
Run Code Online (Sandbox Code Playgroud)
我想提供一个实例方法restricted_data,该方法可以对这些参数执行某些操作并返回一些数据.例:
user = User.find(1)
user.restricted_data # Returns all columns except :id, :name, :email
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
DHH撰写了一篇文章,主张使用关注点.这似乎是一种很好的做法,在很多情况下,它们与我的应用程序配合得很好.但是,有几种情况下,多个模型具有相似但略有不同的方法,例如:
def find_or_create_membership
user_membership = User::Membership.where(:group_id => self.group_id,
:user_id => self.invitee_id).first_or_create(:status => "invited")
end
Run Code Online (Sandbox Code Playgroud)
和:
def find_or_create_membership
user_membership = User::Membership.where(:group_id => self.group_id,
:user_id => self.invitee_id).first_or_create(:status => "declined")
end
Run Code Online (Sandbox Code Playgroud)
这些方法是相同的,除了第一个设置status为"邀请"而第二个设置为"拒绝".有没有办法通过关注点将参数传递给这些方法?