在我的rails模型中,我有时会覆盖一个属性设置器,因此它会设置多个属性,如下所示:
class UserSubscription < ActiveRecord::Base
# multi setter!
def subscription_plan=(sp)
self.duration = sp.duration
self.num_lessons = sp.num_lessons
self.checkout_active_duration_days = sp.checkout_active_duration_days
self.num_collaborators_can_have = sp.num_collaborators
super sp
end
# multi setter!
def stripe_subscription=(ss)
self.stripe_subscription_id = ss.id
self.current_period_start = UserSubscription.stripe_stamp_to_datetime(ss.current_period_start)
self.current_period_end = UserSubscription.stripe_stamp_to_datetime(ss.current_period_end)
end
end
虽然最初我认为这有点聪明,但随着时间的推移(多年),我觉得缺乏透明度会让我感觉不舒服。
所以我玩弄了没有&#34;覆盖/超载&#34;但专门调用这些方法#set_attrs_by_subscription_plan,或类似的东西。相比之下,这感觉更笨重,有点麻烦,但烟雾和镜子都少了。
在我看来,这必须是其他人处理过的事情,甚至可能是有名字的东西。甚至可能有一个行业标准来实现这一点,或设计模式。
有没有人对我有建议/推荐?
答案 0 :(得分:1)
您可以使用currupt.py random_file.wav
。