无法调用从助手到模型的方法

时间:2015-09-15 14:52:33

标签: ruby-on-rails

我希望使用此代码,但我很难让它正常工作。它包含在模型中:

public void Handle(ItemCreated msg)
{
    if(msg == null) throw new ArgumentNullException("msg");

    var @event = ItemEvent.NewItemCreated(msg);
    _repository.Update(@event);
}

transaction方法存储在一个帮助文件中(不要问)但我似乎无法调用它。任何建议。

def to_pdf
  title = @account.name
  subtitle = "Account Statement: #{@month_name} #{@year}"
  StatementPDF.new(title, subtitle, transactions).render
end

我有关于放置我的交易方法的建议,但由于我的薪资以上的原因必须在那里。关于这一点最奇怪的是它在某一点工作,当我重新加载环境时,只是为了检查一切是否正常工作,它应该再次停止工作。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

(为了便于阅读,请移动回答,但这更像是一个扩展评论。)

助手是为了观点。

从视图层发出HTTP请求是不好的,因为(a)它在视图层中放置了太多逻辑,并且(b)它反直觉并且可能被滥用,例如,某人可能意外(或)有目的地多次调用它,可能会产生两次成本。

(部分缓解是因为缓存排序,取决于对@transactions的访问权限。)

这样的东西属于实用程序类,从控制器调用。 (通常只有控制器才能生成传递给视图的数据。)这使得控制器更容易测试,因为你可以轻而易举地模拟/存根顶层实用程序类方法,而不必使用虚假的web层,模拟{{1等等。

不相关,但Ruby倾向于串联插值,例如

get_call

我也不喜欢像这样的原始调用,并且更喜欢在某种形式的API机制背后看到它们,特别是如果这是整个应用程序中使用的模式,例如:

response = get_call("/Accounts/Statements/#{account_id.to_s}/#{start}/#{finish}")

(我甚至可能会创建一个URL构建器,但我喜欢非常简洁的交流代码。)

将它们转换为def get_transactions_data(account_id, start, finish) response = get_call("/Accounts/Statements/#{account_id.to_s}/#{start}/#{finish}") JSON.parse(response.body) end 个对象的步骤可能也可能不属于此类,这取决于您的应用的布局方式以及图层的分离程度。

相关问题