https://github.com/rails-sqlserver/activerecord-sqlserver-adapter
非常棒的工具,我插入SQLServer 2008时遇到了一些麻烦 弄清楚如何从rails控制台执行SP,但我不知道在哪里 离开这里:(
这似乎是一个愚蠢的问题,但我很新 发展所以任何帮助将不胜感激!!
以下是我从控制台运行SP(PD_DE_getSegmentProfile)的方法:
$ PdDeSegmentMaster.execute_procedure :PD_DE_getSegmentProfile, 23, 'all'
Execute Procedure (49.6ms) EXEC PD_DE_getSegmentProfile 23, 'all'
=> [{"segment_code"=>"23", "profile_element"=>"age_range",
"Value"=>"35-54"}, {"segment_code"=>"23",
"profile_element"=>"avg_HH_size", "Value"=>"4.10"}
我知道这是一个哈希,但我不知道如何从我的应用程序调用它, 在视图中显示它,等等。我真的不关心存储 因为我可以回想起SP再次获得它。我在哪里放 SP在应用程序中调用?控制器?模型?
database.yml,externaldb.rb(model)以及设置连接所需的基础知识都很好,只需要将返回的哈希移动到HTML。
答案 0 :(得分:1)
最好将业务逻辑转变为模型。
让我们说你正在使用控制器“PdDeSegmentMastersController”
class PdDeSegmentMasterController < ActionController
def get_segment_profile
@segment_profiles = PdDeSegmentMaster.get_segment_profile
end
end
在您的模型“PdDeSegmentMaster”
中class PdDeSegmentMaster < ActiveRecord::Base
#write a method to execute you stored procedure
def self.get_segment_profile
self.execute_procedure :PD_DE_getSegmentProfile, 23, 'all'
end
end
在您的视图“get_segment_profile.html.erb”
中<% if @segment_profiles.present? %>
<table>
<tr>
<th>segment_code</th>
<th>profile_element</th>
<th>Value</th>
</tr>
<% @segment_profiles.each do | segment_profile| %>
<tr>
<td><%= segment_profile["segment_code"] %></td>
<td><%= segment_profile["profile_element"] %></td>
<td><%= segment_profile["Value"] %></td>
</tr>
<% end %>
</table>
<% else %>
<h1>No segment profiles found!</h1>
<% end %>
如果你还有任何积木,请告诉我。