Rails:向Concern传递参数

6

DHH撰写了一篇文章,提倡使用concerns。这似乎是一个好的实践,在许多情况下,他们与我的应用程序很好地配合使用。然而,在多个模型具有类似但稍有不同的方法的几种情况下,存在以下问题:

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设置为 "invited",而第二个将其设置为 "declined"。我能通过关注点传递参数给这些方法吗?

我为此做的一件事是尝试模仿 devise 的做法,例如通过定义一个带参数的类方法。这是 devise 的示例(https://github.com/plataformatec/devise/blob/master/lib/devise/models.rb#L83),这是我在其中一个项目中所做的事情的示例:https://github.com/pjambet/beech-server/blob/master/app/models/concerns/searchable.rb 请注意,我的做法可能完全错误和愚蠢,这只是模仿 devise(和其他人)行为的一种尝试。 - pjam
你如何传递参数? - nullnullnull
您可以像平常一样在类中调用该方法并传递参数:请参见 https://github.com/pjambet/beech-server/blob/master/app/models/user.rb#L40 - pjam
好的,我试试看。 - nullnullnull
请参见https://dev59.com/mm3Xa4cB1Zd3GeqPbSS2。 - antinome
相关:https://dev59.com/U18d5IYBdhLWcg3wXRQX - jesal
1个回答

0
你可能会对Paramix感兴趣。
虽然我自己从未使用过,但是不知道,感觉像是一个伪好点子©。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接