我希望使用此代码,但我很难让它正常工作。它包含在模型中:
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
我有关于放置我的交易方法的建议,但由于我的薪资以上的原因必须在那里。关于这一点最奇怪的是它在某一点工作,当我重新加载环境时,只是为了检查一切是否正常工作,它应该再次停止工作。有什么建议吗?
答案 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
个对象的步骤可能也可能不属于此类,这取决于您的应用的布局方式以及图层的分离程度。