SORU
26 Ocak 2013, CUMARTESİ


Nasıl Raylar ile ilgili 4 kullanmak için

Varsayılan Raylar 4 proje jeneratör şimdi dizini "" kontrolörler ve modelleri altında. kaygılar oluşturur Yönlendirme kaygıları, ama denetleyicileri veya modeller hakkında hiçbir şey kullanma hakkında bazı açıklamalar buldum.

"DCI trend" toplum ve böyle bir deneyin. akımı ile bir ilgisi yoktur eminim

Asıl önemli olan bu özelliği kullanmak gerekiyor, orada iş yapmak için adlandırma / sınıf hiyerarşisini tanımlamak için nasıl bir sözleşme? Nasıl bir model veya denetleyici bir endişe vardır?

CEVAP
25 ŞUBAT 2013, PAZARTESİ


Kendi başıma öğrendim. Aslında oldukça basit ama güçlü bir kavramdır. Örnekte olduğu gibi kod yeniden kullanımı ile aşağıda bir ilgisi yoktur. Temelde fikir ortak özü ve / veya model temiz ve çok şişman ve dağınık onları almamak için kod özel parçalar bağlam.

Bir örnek olarak, iyi bilinen bir model, taggable desen koyacağım:

# app/models/product.rb
class Product
  include Taggable

  ...
end

# app/models/concerns/taggable.rb
# notice that the file name has to match the module name 
# (applying Rails conventions for autoloading)
module Taggable
  extend ActiveSupport::Concern

  included do
    has_many :taggings, as: :taggable
    has_many :tags, through: :taggings

    class_attribute :tag_limit
  end

  def tags_string
    tags.map(&:name).join(', ')
  end

  def tags_string=(tag_string)
    tag_names = tag_string.to_s.split(', ')

    tag_names.each do |tag_name|
      tags.build(name: tag_name)
    end
  end

  # methods defined here are going to extend the class, not the instance of it
  module ClassMethods

    def tag_limit(value)
      self.tag_limit_value = value
    end

  end

end

Bu yüzden Ürün örneğini izleyerek, istediğiniz herhangi bir sınıf için Taggable ekleyin ve işlevselliği paylaşabilirsiniz.

Bu çok iyi DHH açıklanabilir:

4, programcıları ile endişeleri kullanmaya davet edeceğiz Raylar varsayılan app/models/kaygılar ve app/kontrolörleri/endişeleri dizinleri bu otomatik olarak yüklemek yolun bir parçası. İle birlikte ::ActiveSupport, sırf bunu yapmak için yeterince destek var sarıcı Endişe hafif faktoring mekanizması Parlatıcı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Creavite

    Creavite

    8 Mart 2009
  • jcortes187

    jcortes187

    24 Mart 2006
  • SerienTrailerMP

    SerienTraile

    7 HAZİRAN 2012