Rails:将参数传递给关注点
Posted
技术标签:
【中文标题】Rails:将参数传递给关注点【英文标题】:Rails: Passing an Argument to a Concern 【发布时间】:2013-03-09 20:58:31 【问题描述】:DHH 写了一个article 提倡使用关注点。这似乎是一种很好的做法,在很多情况下,它们与我的应用程序配合得很好。但是,在某些情况下,多个模型具有相似但略有不同的方法,例如:
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
和:
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
除了第一个将status
设置为“已邀请”而第二个设置为“拒绝”之外,这些方法是相同的。有没有办法通过关注点将参数传递给这些方法?
【问题讨论】:
我为此做的一件事是试图模仿设计正在做的事情,例如通过定义一个接受参数的类方法。这是设计示例(github.com/plataformatec/devise/blob/master/lib/devise/…),例如,这是我在一个项目中所做的:github.com/pjambet/beech-server/blob/master/app/models/concerns/… 请注意,我的做法是完全错误和愚蠢的,这只是试图模仿设计(和其他)行为 如何传入参数? 您可以像往常一样调用类中的方法并传递参数:参见github.com/pjambet/beech-server/blob/master/app/models/… 美丽。我会开枪的。 另见***.com/questions/14300427/… 【参考方案1】:您可能对Paramix 感兴趣。
不过,我自己从未使用过它。不知道,闻起来像 False-Good-Idea©。
【讨论】:
以上是关于Rails:将参数传递给关注点的主要内容,如果未能解决你的问题,请参考以下文章