在哪里放置几个类所需的属性哈希?

时间:2016-06-09 13:59:41

标签: ruby-on-rails ruby-on-rails-4

在我的应用程序中,我有两个管理持久性的服务对象:

searchBar.setImage(UIImage(named: "tempUser")!,
                forSearchBarIcon: UISearchBarIcon.Search, 
                           state: UIControlState.Normal)

另一个:

class UpdateProductService
   <...>
  def update_product
    product_in_db.attributes = product_params
    product_in_db.save! if product_in_db.changed?
  end
   <...>
end

这些对象都使用属性'product_params'的哈希值和其他一些属性哈希值。像这样:

class CreateProductService
  <...>
  def create_product
    self.product = account.products.create!(product_params)
  end
  <...>
end

这些哈希值现在存储在两个服务中并相互复制。问题是:我可以在哪里放置此属性和其他属性值(在哪个文件中,在app-tree中的哪个位置)从我的服务对象中调用它们,并将一些“product”作为参数。

1 个答案:

答案 0 :(得分:0)

这对我来说似乎是一个问题。将其放在app/services/concerns(或app/service_objects/concerns,无论您的服务是什么)。

module Concerns
  module WithProductParams
    extend ActiveSupport::Concern

    def product_params
      {
        archived: product.archived,
        available: product.available,
        category_id: product.category_id,
        short_description: product.short_description,
        description: product.description,
        title: product.title,
      }
    end
  end
end

然后像这样使用它:

class CreateProductService
  include Concerns::WithProductParams