ruby 关于自定义DSL的演示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 关于自定义DSL的演示相关的知识,希望对你有一定的参考价值。

class Preference

    # Not allow dynamic attributes
    not_allow_dinamic_attributes
    
    has_rest_method create: '/checkout/preferences'
    has_rest_method read:   '/checkout/preferences/:id'
    has_rest_method update: '/checkout/preferences/:id'
    
    # Setting the relations between objects
    relation_has_many    :items
    relation_has_one     :payer
    relation_has_one     :shipment
    
    # Setting the strong attributes
    has_strong_attribute :auto_return,          validation: {valid_values: ["approved", "all"]}
    has_strong_attribute :back_urls,            type: Hash
    has_strong_attribute :notification_url,     type: String,    lenght: 500
    has_strong_attribute :id,                   type: String,    read_only: true
    has_strong_attribute :init_point,           type: String,    read_only: true
    has_strong_attribute :operation_type,       type: String,    read_only: true
    has_strong_attribute :additional_info,      type: String,    lenght: 600
    has_strong_attribute :external_reference,   type: String,    lenght: 256
    has_strong_attribute :expires,              type: Boolean
    has_strong_attribute :expiration_date_from, type: Date
    has_strong_attribute :expiration_date_to,   type: Date
    has_strong_attribute :collector_id,         type: Integer,   read_only: true
    has_strong_attribute :client_id,            type: Integer,   read_only: true
    has_strong_attribute :marketplace,          type: String
    has_strong_attribute :marketplace_fee,      type: Float
    has_strong_attribute :differential_pricing, type: Hash
    has_strong_attribute :payment_methods,      type: Hash
    
    # Custom Behavior :
    def save
      remote_save{|response| self.id  = response["id"]}
    end
    
end

以上是关于ruby 关于自定义DSL的演示的主要内容,如果未能解决你的问题,请参考以下文章

带参数的 Ruby DSL 定义方法

Ruby DSL 体验?

Ruby 中的简单 DSL

DSL-让你的 Ruby 代码更优秀

您将如何在 Ruby 中设计这样的 DSL?

在 ruby​​ DSL 实现中捕获规范文件名?