首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用eval执行aasm块时出错

使用eval执行aasm块时出错
EN

Stack Overflow用户
提问于 2016-04-14 20:25:21
回答 1查看 30关注 0票数 0

我们将整个aasm块放入string中,并在payment_request模型中对其进行了验证。这是德福:

代码语言:javascript
复制
class PaymentRequest < :ActiveRecord::Base
  include AASM

  def self.load_wf_spec(wf_spec, wf_def_name)
     eval("aasm(:#{wf_def_name})  :column => 'wf_state' {#{wf_spec}}")
  end
end

错误是:

代码语言:javascript
复制
 Failure/Error: eval("aasm(:#{wf_def_name})  :column => 'wf_state' {#{wf_spec}}")

  SyntaxError:
    (eval):1: syntax error, unexpected ':', expecting end-of-input
    aasm(:test)  :column => 'wf_state' {state :...
                  ^
  # ./app/models/payment_requestx/payment_request.rb:11:in `eval'

下面是变量的值:

代码语言:javascript
复制
  wf_def_name = 'test'
  wf_spec = "state :initial_state, :initial => true
       state :ceo_reviewing 
       state :approved
       state :stamped
       state :paid
       state :rejected
      event :submit_test do
         transitions :from => :initial_state, :to => :ceo_reviewing
      end
      event :ceo_approve_test do
         transitions :from => :ceo_reviewing, :to => :approved
      end 
      event :ceo_reject_test do
        transitions :from => :ceo_reviewing, :to => :rejected
      end
      event :ceo_rewind_test do
        transitions :from => :ceo_reviewing, :to => :initial_state
      end
      event :stamp_test do
        transitions :from => :approved, :to => :stamped
      end
      event :pay_test do
        transitions :from => :stamped, :to => :paid
      end"

如果删除(:test)',则相同的错误指向next:

代码语言:javascript
复制
Failure/Error: eval("aasm :column => 'wf_state' {#{wf_spec}}")

  SyntaxError:
    (eval):1: syntax error, unexpected '{', expecting end-of-input
    aasm :column => 'wf_state' {state :initial_state, :initial => true
                                ^
  # ./app/models/payment_requestx/payment_request.rb:11:in `eval'

在中世纪中缺少了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-15 00:02:58

以下是它的工作原理:

代码语言:javascript
复制
eval("aasm(:#{wf_def_name}, :column => 'wf_state') {#{def_string}}")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36633309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档