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:将参数传递给关注点的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地将参数传递给rails表单

如何将参数传递给Rails中的委托方法

Java:将具有不同类型的参数传递给函数

如何将参数传递给 Rails 4 中的 has_many 关联范围?

在rails应用程序中通过ajax请求将参数传递给控制器

如何将查询参数传递给 Rails API 控制器?