English 中文(简体)
服务层和控制器
原标题:Service layer and controller

I m个新的铁路。 Im利用服务层保持我的控制器 thin。 我的所有服务层档案都位于<条码>、应用程序/服务/单>、<条码>申请/服务/应用程序、<条码>申请/服务/基础设施。 例如,这里是我的公司服务:

class CompanyService

  def self.create(params)
    company = Company.new(params)
    rst = true
    ActiveRecord::Base.transaction do
      begin
        company.save!
      rescue ActiveRecord::RecordInvalid
        rst = false
      rescue ActiveRecord::StatementInvalid
        rst = nil
      end
    end
    return company, rst
  end

  def self.update(params)
    company = get_company(params[:id])
    rst = true
    ActiveRecord::Base.transaction do
      begin
        company.old_category_ids = company.category_ids
        company.assign_attributes(params[:company])

        decrease_category_ids = company.old_category_ids-company.category_ids
        decrease_counters(decrease_category_ids)

        increase_category_ids = company.category_ids-company.old_category_ids
        increase_counters(increase_category_ids)

        company.save!
      rescue ActiveRecord::RecordInvalid
        rst = false
      rescue ActiveRecord::StatementInvalid
        rst = nil
      end
    end
    return company, rst
  end # end update

这里是公司控制员:

    def create
      @company, rst = CompanyService.create(params[:company])
      if rst == true
        redirect_to(admin_companies_url, notice: "Company was successfully created.")
      elsif rst == false
        render active_admin_template( new.html.erb )
      else
        redirect_to admin_companies_url, notice: "Something went wrong. Please try again."
      end
    end

    def update
      @company, rst = CompanyService.update(params)
      if rst
        redirect_to admin_company_url(company), notice: "Company was successfully updated."
      elsif rst == false
        render active_admin_template( edit.html.erb )
      elsif rst == nil
        redirect_to admin_companies_url, notice: "Something went wrong. Please try again."
      end
    end

    def destroy
      CompanyService.destroy(params[:id])
      redirect_to admin_companies_url
    end

因此,我有两个问题:

  1. I know my controller code is not good. How to improve it?
  2. My services are not automatically loaded in production and development environment. Why?

英语穷人职业。 感谢你提供一切咨询和帮助。

最佳回答

是否有人想通过服务来利用模型和模拟互动?

自动装上您的服务,应当包括自动载荷(config.autoload_paths)在座标/申请中。

您对记录不佳(无记录或无效陈述)也进行了双重检查,无论记录为何没有保存,其用户经验都是一样的,因此没有理由开脱。 你们的控制者应当知道行动是否成功。

问题回答

暂无回答




相关问题
rails collection_select vs. select

collection_select and select Rails helpers: Which one should I use? I can t see a difference in both ways. Both helpers take a collection and generates options tags inside a select tag. Is there a ...

SSL slowness in EC2

We ve deployed our rails app to EC2. In our setup, we have two proxies on small instances behind round-robin DNS. These run nginx load balancers for a dynamically growing and shrinking farm of web ...

Auth-code with A-Za-z0-9 to use in an URL parameter

As part of a web application I need an auth-code to pass as a URL parameter. I am currently using (in Rails) : Digest::SHA1.hexdigest((object_id + rand(255)).to_s) Which provides long strings like : ...

RubyCAS-Client question: Rails

I ve installed RubyCAS-Client version 2.1.0 as a plugin within a rails app. It s working, but I d like to remove the ?ticket= in the url. Is this possible?

activerecord has_many :through find with one sql call

I have a these 3 models: class User < ActiveRecord::Base has_many :permissions, :dependent => :destroy has_many :roles, :through => :permissions end class Permission < ActiveRecord::...

Ordering a hash to xml: Rails

I m building an xml document from a hash. The xml attributes need to be in order. How can this be accomplished? hash.to_xml

Text Editor for Ruby-on-Rails

guys which text editor is good for Rubyonrails? i m using Windows and i was using E-Texteditor but its not free n its expired now can anyone plese tell me any free texteditor? n which one is best an ...

How to get SQL queries for each user where env is production

I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...

热门标签